Přejít k navigační liště

Zdroják » Různé » Enum a statická analýza kódu

Enum a statická analýza kódu

Články Různé

Mám jednu univerzální radu pro začínající programátorty. V učení sice neexistují rychlé zkratky, ovšem tuhle radu můžete snadno začít používat a zrychlit tak tempo učení. Tou tajemnou ingrediencí je statická analýza kódu. Ukážeme si to na příkladu enum.

Text vyšel původně na webu autora.

Úvod

O statické analýze kódu jste už možná slyšeli. Nejen v Java světě, mám na mysli nástroje PMDCheckstyleSpotBugsSonarQubeCoverity Scan a mnohé další. Nemluvě o radách, které vám dává samotné IDE. Neříkám, ať si instalujete všechno a hned. Doporučoval bych sledovat alespoň to, co vám poradí IntelliJ IDEA spolu s SonarLint pluginem. Místopřísežně prohlašuji, že po letech programování se učím stále něco nového. Nemyslím si, že byste měli rezignovat na čtení knih jako Effective Java, Joshua Bloch, ale proč si nezapnout automatickou kontrolu, že?

Ještě bych chtěl dodat, že nejde o slepé následování pravidel. Snažil jsem se naučit trochu fotografovat, tam jde taky o to osvojit si základní osvědčená pravidla kompozice a expozice. Jasné, umělci pravidla porušují, ale vědí (alespoň intuitivně) proč to dělají a čeho tím dosáhnou.

Enum

Pojďme se podívat konkrétně na pravidlo Enum values should be compared with ==. Připomeňme, že operátor == porovnává reference (místo v paměti) zatímco k porovnání ekvivalence objektů slouží metoda equals. Občas to dožene i ostřílené programátory. Ano, stalo se to i mně. Na svoji obhajobu uvádím, že to bylo v rámci refaktoringu a kompilátor si na to nestěžoval. Tohle pravidlo by však podobné chybě dokázalo zabránit.

Jak pravidlo uvádí, použití == nad enum:

  • vrací stejný výsledek porovnání (obsahu) jako equals
  • je více null-safe než equals()
  • poskytuje kontrolu už v době kompilace (statickou) než kontrolu až za běhu

Následující kód se nezkompiluje. A i když změníte String za Fruit, tak za běhu nedostanete NullPointerException (na rozdíl od equals, kde si musíte dávat pozor na pořadí, dávat konstanty na první místo nebo nejprve kontrolovat, zda proměnná není null).

String currentFruit = null;
if (currentFruit == Fruit.APPLE) {
// ...

Závěr

Doporučuji začít používat nějakou statickou analýzu kódu. Sledujte, co vám to nadhodí. Pravidla můžete selektivně odebírat či dokonce přidávat. Zároveň lze měnit jejich závažnost. Ze začátečníků to mávnutím kouzelného proutku profíky neudělá, ale učení může výrazně zrychlit. Minimálně uděláte dojem s odevzdaným úkolem na pohovor (alespoň u mě 😉), když to nebude samý warningAni profíci by tím nemuseli opovrhovat (ne, to nebudou zralí inženýři).

Komentáře

Odebírat
Upozornit na
guest
0 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.

Zapřáhněte AI jako nikdy předtím. Květnová konference WebExpo přivítá hvězdy technologického světa

Od 28. do 30. května 2025 promění pražský Palác Lucerna na tři dny technologická konference WebExpo. Na programu je více než 80 přednášek a workshopů od expertů z celého světa. WebExpo tradičně propojuje vývojáře, designéry, marketéry i byznysové lídry a nabízí praktické dovednosti, strategické myšlení a přináší nejnovější trendy nejen v oblasti AI.