Il principio Don’t Repeat Yourself (DRY) afferma che la duplicazione nella logica dovrebbe essere eliminata tramite astrazione; la duplicazione nel processo dovrebbe essere eliminata tramite automazione. La duplicazione è uno spreco. L’aggiunta di codice aggiuntivo e non necessario ad una base di codice aumenta la quantità di lavoro richiesto per estendere e mantenere il software in futuro. Il codice duplicato si aggiunge al debito tecnico. Se la duplicazione deriva dal Copy Paste Programming o dalla scarsa comprensione di come applicare l’astrazione, diminuisce la qualità del codice. La duplicazione nel processo è anche uno spreco se può essere automatizzata. I test manuali, la costruzione manuale e i processi di integrazione, ecc. dovrebbero essere eliminati quando possibile attraverso l’uso dell’automazione.
Condizionali sospetti
Spesso le istruzioni if-then e switch hanno l’abitudine di essere duplicate in più punti all’interno di un’applicazione. È comune nelle applicazioni protette avere diverse funzionalità disponibili per gli utenti in certi ruoli, quindi il codice può essere disseminato di controlli if-user-is-in-role. Altre applicazioni possono essere state estese per gestire diversi tipi simili ma distinti di strutture dati, con dichiarazioni switch() a tutti i livelli del flusso di lavoro usate per descrivere le differenze di comportamento che ogni struttura dati dovrebbe avere. Dove possibile, rifattorizzare questi condizionali usando schemi di progettazione ben noti per astrarre la duplicazione in una singola posizione all’interno del codice.
Once and Only Once può essere considerato un sottoinsieme del principio DRY.
Il principio Open/Closed funziona solo quando viene seguito DRY.
Il principio di responsabilità unica si basa su DRY.