Java programátor expert
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.