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í.

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ť