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.
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í.
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.
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.
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). |
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.
DRY úzce spolupracuje s dalšími pravidly:
Související pojmy: OOP, Refaktorování, SOLID principy, KISS, YAGNI, Dědičnost.