Ú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
undefineduvnitř 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. (Pronullse 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
nullaundefined: default se neaktivuje přinull. -
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.