Kategorie: Zájmy

  • Java tip: For není fór a split není řiť

    For()

    Už jste se někdy přistihli při psaní tohoto cyklu?

    for(int i = 1; i < something; i++) {
        //Do something
    }
    

    Pak vězte, že v (dle mého názoru) opravdu velkém počtu případů je to znamení, že je něco špatně. Buď máte špatný design, anebo to jde celé udělat jinak a mnohem lépe. Ne vždy se tomu člověk vyhne, ale čím častěji, tím líp.

    Split()

    Další věcí je metoda String.split(). Použili jsme ji asi všichni, ale přiznejte se, kolik z vás ji opakovaně používá na parsování Stringu ve smyslu, že pak použijete pouze něco z výsledné množiny? Na to mám pouze jednu odpověď: Naučte se regulární výrazy a vyzkoušejte Rojo 🙂.

    NějakýInterfaceImpl

    Původně jsem se domníval, že je to spíše věc ojedinělá, ale nedávno jsem v praxi narazil již na druhého člověka, který, jak se zdá, má až chorobnou touhu vytvářet interfacy 🙂 . Jedná se především o DAO třídy. Moje představa o použití interfacu z hlediska designu je taková:

    1. Očekává se, že něco může mít vícero implementací
    2. Tyto implementace jsou volány “přes jediné API” / nebo též “stejným způsobem”

    Pokud si tyto dvě otázky položím v případě DAO tříd, tak jsem názoru, že každé DAO má mít vždy pouze jednu jedinou implementaci, a i kdybych připustil, že by někdo někdy chtěl mít pro 1 DAO implementací více, tím hůře si dokážu představit, proč by je chtěl volat stejným způsobem? 🙂 S tímto i úzce souvisí názvosloví končící na Impl, kde vám hned vysvětlím, proč ho nemám rád. Samotná neurčitost názvu na mě působí dojmem, že implementace daného interfacu je skutečně pouze jedna, čímž smysl interfacu samotného vlastně popírá, jinak by se přeci jmenovala nějak smysluplně, nebo ne? Např. měl-li bych interface Service, čekal bych implementace jako FileService, NetworkService, ale rozhodně ne ServiceImpl 🙂 . Z tohoto mi plynou hned dvě ponaučení:

    1. Přemýšlejte nad názvoslovím, protože již ono samotné může odhalit chybu ve vašem myšlení
    2. Nedržte se striktně naučených pouček o čistém kódu, ale běžte více do hloubky daného problému a, zkrátka, přemýšlejte 🙂 . Aneb jak již jednou někdo řekl: “Všechny generalizace jsou mylné, včetně této”.

    PS: Další důvod proč nedělat interfacy tam, kde jsou zjevně zbytečné, je ten, že když si na některou metodu takového objektu v Eclipsu se stiskem CTRL kliknu, nedostanu se přímo do kódu, ale do interfacu samotného, což je strašně otravné 🙂 .

  • Kiting: V jakém větru (ne)lítat

    Rozhodl jsem se, že si zpříjemním Štědrovečerní dopoledne malou kitingovou popotahovačkou směrem do kopce. Dle Windguru mělo foukat mezi 7 – 13m/s a tak jsem vzal na záda své Gyro 7m a šel. Nicméně na místě byly poryvy mnohem větší, řekl bych okolo 15m/s a výše na kopci to mohlo být i 18m/s, což už je docela peklíčko, ale ani to mě neodradilo a začal jsem rozbaloval.

  • Rojo benchmark s JMH

    Zrovna nám nedávno vyšlo Rojo ve verzi 1.0.3 a já jsem si říkal, jak je na tom tato knihovna s výkonem. Rozhodl jsem se ji tedy trochu otestovat a proměřit pomocí JMH a i přesto, že se mi způsob vytváření nového benchmarku přes maven archetyp příliš nepozdával, tak se mi to nakonec rozjet podařilo 🙂 .

  • Nejšikovnější způsob, jak v Javě inicializovat pole

    Věděli jste, že se to dá udělat i takto?

    Object[] objects = {1, "2", 3.5f};
    String[] strings = {"one", "two", "three"};
    int[] ints = {1, 2, 3};
    

    Já teda ne … až dodnes :-). Ale krom toho: pole nepoužívejte – jen když musíte ;-).

  • Srovnání Aeros Gyro 7qm s Pegas Chiméra 8,5qm

    V komentářích k mému letmému testu Aeros Gyro 7qm se objevil dotaz ohledně srovnání s Chimérou 8,5qm od Pegasu, tak jsem si říkal, že se to pokusím nějak důkladněji sepsat do další recenze, ať to případně poslouží i budoucím zájemcům 🙂

  • Jak jsem testoval Aeros Gyro 7qm

    Čekání bylo dlouhé, ale zážitek stál za to. Dnes jsem se konečně stavil na poštu vyzvednout si mého nového kamaráda do silného větru. V práci jsem musel skončit o hodinu dříve, protože víte, u nás na vesnici má Česká pošta otevřeno do 17h pouze ve středu a čekat o 1 den navíc bych už asi nevydržel 🙂 .

  • Rojo: Java knihovna pro mapování regulárních výrazů na POJO objekty

    Možná si někteří z vás ještě vzpomenou, jak jsem kdysi psal o “mikro-knihovně” Re. Čas i myšlenky trochu uzrály, a tak tu máme nástupce, který jde ještě o krok dál. Mám zároveň radost, protože je to má první knihovna, která je dostupná  i přímo z centrálního Maven repozitáře! Pojďme mrknout na to, co umí …

  • Landkiting na sněhu

    Při vyčkávání první sněhové nadílky jsme se dohodli, že to půjdeme opět proletět. Sám jsem váhal, jestli vzít pouze mountainboard, nebo lyže, anebo oboje. Nakonec to dle webkamery padlo na MTB a tak na první opravdový snowkiting si budu muset ještě počkat :-). Jezdit to jezdilo, ale hlavním úskalím v takovémto počasí, byly přimrzající kusy vlhkosti, hlíny a sněhu přímo pod podrážkami, načež mi chodidla v poutkách docela klouzaly. Když bylo ježdění touto skutečností znepříjemňováno, tak jsem se rozhodl, že raději zkusím potrénovat nějaké skoky. Nejvyšší skok se mi podařil asi 0,5m, kde jsem se při přistání pěkně svalil na zem :-D. Příště to budu muset točit asi více prudčeji. Ale jinak to byl fajn den. I děti mého kolegy si fajně zalítaly a nejvíce asi překvapil jeho 9letý syn, který si se svými 40kg létal s 3.5m2 trainer kitem za větru 2-5m/s skoro jakoby nic :-).

  • Opět jsme se setkali a pohodově zakitovali

    Tentokrát byla účast docela velká. Hodně se zasvěcovalo trainer kitem, pak pár pojezdů a nakonec jsem se odvážil zkusit i nějaké skoky, u kterých jsem měl pocit, že pomalu začínám přicházet na to, jak to celé funguje, ale každopádně nyní se můj stupeň kontroly během stavu bez tíže znatelně zlepšil :-). Až to více vychytám, možná své zkušenosti sepíšu do článku o tom, jak skákat s kitem.

  • Pohodový landkitingový den v Příboře

    Tentokrát to vyšlo, ale zase foukalo až moc :-).