Obsah
DRY (Don't Repeat Yourself)
DRY je princip, který říká: „Každý kousek znalosti musí mít v rámci systému jediné, jednoznačné a autoritativní zastoupení.“
Jednoduše řečeno: Pokud píšete stejný kód nebo logiku na více místech, děláte chybu. Jakmile budete chtít tuto logiku změnit, budete ji muset hledat a opravovat na všech těchto místech, což dříve či později povede k opomenutí a vzniku chyb.
Jak DRY aplikovat v praxi?
1. Extrakce do funkcí a metod
Pokud se v programu opakuje stejný výpočet nebo sekvence příkazů, přesuňte ji do samostatné funkce. Ostatní části kódu pak tuto funkci pouze volají.
2. Využití dědičnosti a kompozice
V objektově orientovaném programování využíváme dědičnost. Místo abychom u každého zvířete definovali metodu dychej(), definujeme ji jednou v rodičovské třídě Zvíře.
3. Konstanty místo "magických čísel"
Nepište v kódu opakovaně sazbu DPH jako * 0.21. Definujte si konstantu DPH_SAZBA = 0.21 na jednom místě. Pokud se zákon změní, upravíte pouze jednu řádku kódu.
WET: Opak DRY
Když programátor princip DRY nedodržuje, říká se, že kód je WET (vtipná zkratka pro Write Everything Twice – „napiš všechno dvakrát“ nebo We Enjoy Typing – „rádi ťukáme do klávesnice“).
| Vlastnost | DRY (Správný přístup) | WET (Špatný přístup) |
|---|---|---|
| Údržba | Snadná (změna na jednom místě). | Těžká (změna na mnoha místech). |
| Čitelnost | Přehledný a modulární kód. | Dlouhý, nepřehledný „špagetový“ kód. |
| Chybovost | Nízká pravděpodobnost nekonzistence. | Vysoká (zapomenete přepsat jednu kopii). |
Pozor na "Over-engineering"
Ačkoliv je DRY důležitý, nesmí se to s ním přehánět. Někdy se programátoři snaží za každou cenu spojit dva kousky kódu, které vypadají podobně, ale logicky spolu nesouvisí. Tomu se říká předčasná abstrakce.
- Pravidlo tří (Rule of Three): Pokud kód píšete podruhé, můžete si duplicity všimnout. Teprve když ho píšete potřetí, je ten správný čas na jeho refaktorování do společné funkce.
Souvislost s ostatními principy
DRY úzce spolupracuje s dalšími pravidly:
- KISS (Keep It Simple, Stupid): Udržuj kód jednoduchý.
- YAGNI (You Ain't Gonna Need It): Nepiš kód pro funkce, které zatím nepotřebuješ (často v marné snaze o budoucí „DRY“).
- SOLID: Zejména princip jedné odpovědnosti (SRP) pomáhá dosáhnout DRY kódu.
Související pojmy: OOP, Refaktorování, SOLID principy, KISS, YAGNI, Dědičnost.
