Úloha 5 – Validace knihy
| Stránky: | Moodle ZČU |
| Kurz: | Sada úloh pro procvičení v předmětu KVD/PGM1P (BP Vítek Dolný) |
| Kniha: | Úloha 5 – Validace knihy |
| Vytiskl(a): | Nepřihlášený host |
| Datum: | neděle, 18. října 2026, 13.18 |
Úvod do úlohy
V průběhu vývoje programů se často stává, že původně jednoduchá funkce postupně narůstá a začne obsahovat příliš mnoho kroků najednou. Takový kód je pak těžko čitelný, obtížně se udržuje a ještě hůře testuje. Refaktoring – tedy přeorganizování kódu bez změny jeho funkčnosti – nám pomůže rozdělit složité funkce na menší, přehlednější moduly. Každý modul má jasně vymezenou odpovědnost a dobře zvolený název, takže i jiný programátor okamžitě pochopí, co funkce dělá.
Teorie a principy
-
Modularita: funkce by měla řešit jen jednu věc (princip „Single Responsibility“).
-
Redukce parametrů: příliš mnoho parametrů zhoršuje čitelnost. Pokud funkce potřebuje příliš mnoho vstupů, je vhodné rozdělit ji na více menších funkcí.
-
Smysluplné názvy: název funkce má jasně popisovat, co dělá (
overKontakty,spocitejPrumer,zvalidujEmail). -
Dokumentační komentáře: pomáhají budoucím čtenářům kódu rychle pochopit účel funkce. Vhodné je použít krátké komentáře nad každou funkcí.
-
Výsledek refaktoringu: kód je kratší, přehlednější a snadněji rozšiřitelný.
Praktické příklady kódu
1. Původní (nepřehledná) funkce
Tato funkce dělá příliš mnoho věcí najednou – kontroluje jméno, věk, e-mail i souhlas.
2. Refaktorovaná verze s menšími funkcemi
Typické chyby / záludnosti
-
Funkce dělá příliš mnoho věcí – studenti často nechávají vše v jedné funkci.
-
Duplicitní kód – stejné kontroly se objevují na více místech, přitom by mohly být ve vlastní funkci.
-
Příliš mnoho parametrů – lepší je rozdělit úkol na více menších funkcí.
-
Chybějící komentáře – bez krátkých vysvětlení je i čistý kód pro začátečníka těžší pochopit.
Shrnutí – hlavní body k zapamatování
-
Refaktoring = úprava kódu bez změny funkčnosti.
-
Rozdělte velké funkce na menší, které mají jednu jasnou odpovědnost.
-
Omezte počet parametrů – když jich je moc, rozdělte logiku.
-
Používejte smysluplné názvy funkcí a přidejte krátké komentáře.
-
Výsledkem je modulární, čitelný a snadno rozšiřitelný kód.
Úloha
Zadání (kontext úlohy):
Máš funkci, která kontroluje údaje o knize (název, počet stran a dostupnost). Všechny kontroly jsou napsané přímo uvnitř jedné funkce a kód začíná být nepřehledný. Tvým úkolem je refaktorovat kód tak, aby každá kontrola byla ve vlastní funkci.
Cíl úlohy:
Student si procvičí rozdělení složité funkce na menší části, které mají jasně vymeřenou odpovědnost.
Vstupní podmínky:
Student pracuje pouze s nově vytvořeným souborem script.js.
Požadovaný výstup:
-
Napiš pomocné funkce, které zvlášť ověří:
-
zda je název knihy neprázdný,
-
zda má kniha více než 10 stran,
-
zda je kniha dostupná (parametr
true).
-
-
Vytvoř hlavní funkci
overKnihu, která využije menší funkce. -
Pokud některá kontrola selže, vypiš do konzole chybovou hlášku.
-
Pokud všechny kontroly projdou, vypiš do konzole „Kniha je platná a dostupná!“.
Doplňující pokyny:
-
Každá funkce by měla řešit jen jeden úkol.
-
Používej smysluplné názvy a krátké komentáře nad funkcemi.
-
Hlavní funkce může vracet výsledek hned, jakmile zjistí chybu (pomocí
return).
Řešení úlohy
Co je zde splněno
-
každá kontrola má vlastní predikátovou funkci (
maNazev,maViceNezDesetStran,jeDostupna), -
hlavní funkce
overKnihupoužívá tyto menší funkce, -
při první chybě se vypíše chybová hláška a funkce skončí pomocí
return, -
pokud vše projde, vypíše se potvrzení.
Vylepšení oproti začátečnické verzi
-
použití šipkových funkcí (
=>) a stručnější syntaxe, -
přidán
.trim()u názvu, aby se prázdné mezery nepočítaly jako platný název, -
využití negace
!pro zjednodušení podmínek, -
kratší a kompaktnější zápis hlavní funkce.