Het Don’t Repeat Yourself (DRY) principe stelt dat duplicatie in logica moet worden geëlimineerd via abstractie; duplicatie in proces moet worden geëlimineerd via automatisering. Duplicatie is verspilling. Het toevoegen van extra, onnodige code aan een codebase verhoogt de hoeveelheid werk die nodig is om de software uit te breiden en te onderhouden in de toekomst. Dubbele code draagt bij aan technische schuld. Of de duplicatie nu het gevolg is van Copy Paste Programming of van een slecht begrip van hoe abstractie moet worden toegepast, het vermindert de kwaliteit van de code. Duplicatie in het proces is ook verspilling als het geautomatiseerd kan worden. Handmatig testen, handmatige bouw- en integratieprocessen, enz. moeten waar mogelijk worden geëlimineerd door het gebruik van automatisering.
Suspect Conditionals
Vaak hebben if-then en switch statements de gewoonte om op meerdere plaatsen in een applicatie te worden gedupliceerd. Het is gebruikelijk in beveiligde applicaties om verschillende functionaliteit beschikbaar te hebben voor gebruikers met bepaalde rollen, dus de code kan bezaaid zijn met if-user-is-in-role checks. Andere toepassingen kunnen uitgebreid zijn om met verschillende gelijkaardige maar verschillende soorten gegevensstructuren om te gaan, met switch() statements op alle niveaus van de workflow die gebruikt worden om de verschillen in gedrag te beschrijven die elke gegevensstructuur zou moeten hebben. Waar mogelijk, refactor deze conditionals met behulp van bekende design patterns om de duplicatie te abstraheren naar een enkele locatie binnen de codebase.
Een en Alleen Eenmaal kan worden beschouwd als een subset van het DRY principe.
Het Open/Gesloten Principe werkt alleen wanneer DRY wordt gevolgd.
Het Enkele Verantwoordelijkheid Principe vertrouwt op DRY.