Tipy a triky pri písaní Java kódu

V dnešnom článku sa zameriame na osvedčené a užitočné tipy a triky pre tvorbu kvalitného kódu, ktoré aj u nás v msg life radi používame a ktoré ti pomôžu zlepšiť formátovanie, štruktúru, čitateľnosť aj funkčnosť tvojho Java kódu. Programovanie v Jave začne byť zábavné, keď už nebudeme musieť riešiť ako kód vyzerá, ale čo robí.

Písanie Java kódu: tipy a triky
Písanie Java kódu: tipy a triky

V článku sa dozvieš:

    Knižnice

    Programové knižnice používame preto, aby sme si nemuseli všetko vlastnoručne programovať.

    • Použi knižnice tretích strán iba ak je to nevyhnutné. Ak nie sú aktualizované, môžu byť v budúcnosti zdrojom zraniteľností kódu.
    • Používaj jeden testovací framework, nie viac. Napr. JUnit alebo TestNG.
    • Na simulovanie funkcionality v testoch odporúčame používať mockito.
    • Viaceré knižnice ponúkajú veľmi podobné metódy, vyber si jednu knižnicu a tú konzistentne používaj.

    Formátovanie kódu

    Správne formátovanie kódu je veľmi dôležité, lebo presné a konzistentné odsadenie spolu s vhodnými medzerami nám môže výrazne zjednodušiť čítanie a úpravu kódu.

    • Okolo operátorov píš vľavo aj vpravo jednu medzeru.
    • Nepoužívaj pre odsadenie tabulátory, ale medzery.
    • Dlhé riadky kódu rozdeľ do viacerých riadkov tak, že ďalší riadok začína operátorom.
    • Dodržiavaj konzistentne pravidlá formátovanie vo všetkých Java projektoch.
    • Využi vlastnosti moderných programovacích prostredí pri formátovaní kódu (napr. automatické formátovanie).

    Balíčky (packages)

    Packages sa používajú na organizovanie príbuzného a spolusúvisiaceho kódu.

    • Vždy používaj malé písmena v názvoch balíčkov.
    • Názov balíčka musí naznačovať jeho účel.
    • Balíčky organizuj logicky do hierarchickej štruktúry projekty.

    Anotácie

    Poskytujú dodatočné informácie je o kóde vo forme metadát.

    • Limitujeme používanie anotácií, aby bol kód čistejší.
    • Pri použití anotácie @Deprecated poskytni v javadoc komentári dôvod a aj alternatívu.
    • Anotácie @Nonnull a @Nullable používaj striedmo a podľa uváženia.
    • Anotáciu @VisibleForTesting používaj iba dočasne v testoch, keď potrebuješ rozšíriť prístupové práva z private na package private.

    Komentáre

    Majú zacieľ pomôcť vysvetliť kód, preto:

    • ak je kód písaný jednoduchým a zrozumiteľných štýlom, žiadne komentáre nie sú potrebné,
    • nepíš (ani negeneruj) žiadny javadoc pre getter(y) a setter(y),
    • pre (package) privátne metódy uprednostni implementačnú poznámku a vyhni sa písaniu javadoc.

    Výnimky

    Používame ich pri neočakávaných situáciách v kóde.

    • Používaj nekontrolované (unchecked) výnimky, aby bol kód flexibilnejší.
    • Používaj predpripravené typy výnimiek z JDK a vyhni sa vytváraniu vlastných.

    Pomenovanie

    Snažíme sa vyberať vhodné názvy, ktoré odzrkadľujú účel a význam jednotlivých častí programu.

    • Vo všeobecnosti sa vyhýbame skratkám a vyberáme zmysluplné mená.
    • Pre boolean premenné používame príslovky. Napr. disabled.
    • Pre ostatné typy a premenné používame podstatné mená. Napr. ArrayList (trieda), element (premenná).
    • Pre metódy používame slovesá. Napr. add, remove.
    • V názve sa snažíme naznačiť zámer metódy, napr. calculateSpeed.
    • Snažíme sa byť presný, napr. miesto všeobecnej premennej time pre ukladanie času v hodinách, lepšie je použiť timeInHours.
    • Vyhýbame sa akejkoľvek duplicite. Napr. miesto addElement(element), použijeme add(element).

    Metódy

    Metódy tvoria základnú jednotku kódu v Jave, a preto je dôležité dodržiavať osvedčené postupy pri ich písaní.

    • Metóda rieši iba jeden problém (dodržiavame Single Responsibility Principle), ale poriadne.
    • Každá metóda má jednoznačný jeden účel.
    • Dobre štruktúrovaný kód obsahuje krátke metódy a majú menej ako 15 riadkov. Ak je metóda dlhšia mal by na to byť dobrý dôvod.
    • Vyhýbame sa opakovaniu.
    • Vstup do metódy sa snažíme nemeniť a vypočítame výstup.
    • Ak musíme meniť aj vstupný parameter funkcie, naznačíme to v názve funkcie. Napr. funkcia začne prefixom update.
    • Využívame funkcionálne programovanie a moderné API.

    Rozhrania

    Rozhrania sú predpisy, ktoré treba implementovať v daných triedach, ktoré implementujú dané rozhranie.

    • Rozhrania nepoužívame, ak ich nepotrebujeme.
    • Ak rozhranie bude používať iba jedna trieda, použitie rozhrania stráca zmysel.
    • Pri rozhraniach používaj Interface Segregation Principle.
    • Rozhranie navrhujeme za istým špecifickým účelom, vyhýbame sa generickým rozhraniam.

    Triedy

    Triedy sú základné stavebné bloky každej aplikácie v Jave.

    • Každá trieda by mala spracovávať iba jeden špecifický koncept, alebo funkcionalitu.
    • Vyhýbame sa vytváraniu multifunkčných tried, ktoré robia všetko.
    • Rozhodni sa, či tvoja trieda bude zameraná na dáta, alebo na ich manipuláciu. Napr. dátová trieda udržiava stav (napr. Matrix). Trieda zameraná na prácu s dátami definuje správanie (napr. MultiplicationService).
    • Primárne používame privátne metódy. Public metódy iba v nevyhnutnej miere na interakciu objektu s vonkajším svetom.
    • V testoch nepoužívame protected prístup. Namiesto toho použijeme package private.

    Veríme, že ti tieto tipy a triky pomôžu písať čistejší, prehľadnejší a efektívnejší Java kód. Ak si Java programátor a hľadáš prácu, pozri si naše benefity pre zamestnancov a reaguj na najnovšie ponuky práce.

    O autorovi

    Jozef Wagner

    Java Developer Senior

    Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

    Daj nám o sebe vedieť