Úloha 4 – Refaktoring podpisu funkce a práce s parametry

Úvod do úlohy

V reálných projektech často narazíme na funkce plné opakujících se „ochranných“ kontrol typu if (hodnota == undefined), které rozptylují pozornost a zhoršují čitelnost. Přitom mnoho z nich lze elegantně nahradit výchozími (default) parametry přímo v podpisu funkce. Tato sada úloh vás povede k identifikaci míst, kde je vhodné přidat výchozí hodnoty, upravit podpis funkce tak, aby jasně vyjadřoval očekávané vstupy, a doplnit krátké komentáře vysvětlující význam jednotlivých parametrů. Výsledkem bude čistší, čitelnější a robustnější kód.


Teorie a principy

  • Cíl refaktoringu: odstranit rozptýlené kontroly undefined uvnitř těla funkce a nahradit je konzistentními výchozími hodnotami v podpisu.

  • Sémantika podpisu: když jsou výchozí hodnoty v deklaraci, požadované a volitelné vstupy jsou viditelné na první pohled.

  • Pořadí parametrů: parametry s výchozími hodnotami dávejte spíše na konec, aby běžná volání nemusela vyplňovat zbytečné argumenty.

  • Chování při undefined: výchozí hodnota se použije, když argument chybí nebo je explicitně undefined. (Pro null se nepoužije.)

  • Čitelnost a údržba: krátký dokumentační komentář u každé funkce (co dělá, co znamenají parametry, co vrací) snižuje kognitivní zátěž a chyby.


Praktické příklady kódu

1) Před refaktoringem: rozptýlené kontroly undefined

2) Po refaktoringu: výchozí parametry v podpisu

3) Vzorový postup při návrhu podpisu funkce

Nejprve si ujasníme, které vstupy jsou skutečně povinné a které jen ladí chování funkce.

4) Refaktoring reálného úryvku – z formuláře

Před refaktoringem: mnoho drobných ochran uvnitř.

Po refaktoringu: čistý podpis s výchozími hodnotami a popisnými komentáři.


Typické chyby / záludnosti

  • Výchozí hodnoty roztroušené uvnitř těla: po refaktoringu by měly být v podpisu.

  • Nepopsané parametry: bez komentářů není jasné, co je povinné a co volitelné.

  • Nevhodné pořadí: povinné parametry na začátku, volitelné s defaulty na konci.

  • Záměna null a undefined: default se neaktivuje při null.

  • Obrana „napříč kódem“: stejné ochrany v mnoha funkcích – zvažte jednotnou výchozí hodnotu v podpisu nebo rozumnou „obalovou“ funkci.

  • Zbytečné if (param == undefined) po zavedení defaultu: bývá to relikt starší verze – odstranit.


Shrnutí – co si zapamatovat

  • Výchozí parametry pište přímo do podpisu: zlepší to čitelnost i spolehlivost.

  • Povinné vs. volitelné vstupy odlište pořadím a dokumentací.

  • Po zavedení defaultů odstraňte vnitřní kontroly na undefined.

  • Krátké komentáře u funkce vysvětlí význam parametrů a návratovou hodnotu.

  • Výsledkem je modulární, předvídatelný a snadno rozšiřitelný kód.