Čistý kód, který funguje

Od Petr Zemek, 2009-10-24

Někteří o mně určitě ví, že mým oblíbeným způsobem vývoje softwaru je vývoj řízený testy (test-driven development, někdy také nazýváno test-first development - dále jen TDD). Jedním z důvodů, proč na tento přístup nedám dopustit, je to, že jeho aplikováním vzniká něco, co většina softwaru postrádá - čistý kód, který funguje.

Základem vývoje řízeného testy je to, že místo toho, abyste se ihned vrhnuli na implementaci kódu, tak pro něj nejdříve napíšete test, který selže. Poté provedete potřebné úpravy v kódu tak, aby test prošel. Jakmile projde, tak můžete vzniklý kód refaktorovat (refactoring). Poté celý cyklus opakujete.

Velikou předností TDD (a testování obecně) je to, že vám dodává odvahu ke změnám v kódu. Schválně se zamyslete nad tím, kdy se vám naposledy stalo, že jste museli modifikovat nějaký kód a měli jste při tom dobrý pocit... "Cože? Dobrý pocit? Vždy, když něco modifikuji, tak se bojím, abych to nerozbil, a proto do toho raději moc nevrtám." Pokud ale máte kvalitní sadu testů, pak se nemusíte ničeho obávat, protože pokud něco zmodifikujete špatně, tak to hned poznáte - neprojdou vám testy. Nelíbí se vám váš kód? Tak ho beze strachu upravte do podoby, ve které se vám líbit bude.

Minulá věta nás přináší k tomu, k čemu tenhle příspěvek směřuje - k vysvětlení toho, proč aplikování TDD vzniká čistý kód, který funguje. Pokud zprovozňujete test, který neprochází, tak se můžete naplno soustředit jen na to, abyste daný test zprovoznili (tj. přidali potřebnou funkčnost). To vede ke kódu, který funguje. Až jej zprovozníte, tak se můžete (opět naplno) soustředit na to, abyste váš kód upravili a pročistili do té podoby, v jaké se vám bude líbit (refaktorování). Tak vznikne čistý kód. Když to dáte dohromady, tak vznikne to, po čem každý jistě tajně touží.

Určitě si teď říkáte - proč nenapsat čistý a funkční kód hned? Důvod je jednoduchý. Pokud člověk má řešit více věcí najednou, pak dělá chyby a není tak efektivní, jako kdyby dělal věci postupně. Pokud se snažíte o souběžné psaní čistého a fungujícího kódu, tak je to, jako byste žonglovali najednou s čtyřmi míčky. Brzy vám jeden spadne. Pokud se ale budete soustředit vždy na jednu věc, pak budete v danou chvíli žonglovat jen se dvěma míčky. No není to hned jednodušší?

Obsah tohoto pole je soukromý a nebude veřejně zobrazen.

Filtrované HTML (využíváno)

  • Povolené HTML značky: <a href hreflang> <em> <strong> <cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <table>
  • Zvýraznění syntaxe kódu lze povolit přes následující značky: <code>, <blockcode>, <bash>, <c>, <cpp>, <haskell>, <html>, <java>, <javascript>, <latex>, <perl>, <php>, <python>, <ruby>, <rust>, <sql>, <text>, <vim>, <xml>, <yaml>.
  • Řádky a odstavce se zalomí automaticky.
  • Webové a e-mailové adresy jsou automaticky převedeny na odkazy.
CAPTCHA
8 + 7 =
Vyřešte tento jednoduchý matematický příklad a vložte výsledek. Např. pro 1+3 vložte 4.
Nějak se mi tady rozmohl spam, takže poprosím o ověření.