Ú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:
  1. 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).

  2. Vytvoř hlavní funkci overKnihu, která využije menší funkce.

  3. Pokud některá kontrola selže, vypiš do konzole chybovou hlášku.

  4. 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 overKnihu použí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.