Kort fortalt
DRY betyder Don’t Repeat Yourself. Pointen er ikke blindt at fjerne al kopieret kode, men at undgå, at samme viden vedligeholdes flere steder og divergerer.
Hvad betyder princippet?
Andy Hunt og Dave Thomas formulerede DRY i The Pragmatic Programmer: “Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.”
Gentaget kode er et symptom. Det egentlige problem er duplikeret viden — regler, formater, forretningslogik — som ændres ét sted og glemmes et andet.
Én sandhed, ét sted — så ændringer ikke skal jages gennem systemet.
Et konkret eksempel
En prisregel er hardcodet i frontend, backend og en rapport. Marketing ændrer reglen ét sted; de to andre bliver forkerte. En fælles kilde til reglen fjerner inkonsistensen.
To næsten ens funktioner kopieres. Senere viser det sig, at de burde divergere. Blind DRY-abstraktion skaber her en værre kobling end lidt gentagelse.
Hvornår er princippet nyttigt?
- Når samme regel findes i flere lag.
- Når bugfixes skal laves flere steder.
- Når dokumentation og kode modsiger hinanden.
- Når man overvejer abstraktion efter gentagelse — ikke før.
Begrænsninger og kritik
“AHA” (Avoid Hasty Abstractions) minder om, at for tidlig DRY kan skabe forkerte koblinger. Gentagelse er nogle gange billigere end en dårlig fælles model.
DRY er et princip om videnskonsistens, ikke et forbud mod alle lignende linjer kode.
Kilder
- Andy Hunt & Dave Thomas, The Pragmatic Programmer (1999) — formulering af DRY.
- Bemærkning: Senere praksisdiskussion nuancerer, hvornår abstraktion bør vente.