O princípio Don’t Repeat Yourself (DRY) afirma que a duplicação na lógica deve ser eliminada via abstração; a duplicação no processo deve ser eliminada via automação. Duplicação é Desperdício. Adicionar código adicional e desnecessário a uma base de código aumenta a quantidade de trabalho necessária para estender e manter o software no futuro. A duplicação de código aumenta a dívida técnica. Se a duplicação deriva da Programação de Copiar Colar ou da má compreensão de como aplicar a abstração, ela diminui a qualidade do código. A duplicação em processo também é um desperdício se ela puder ser automatizada. Testes manuais, processos de compilação e integração manual, etc. devem ser eliminados sempre que possível através do uso de automação.
Suspeito Condicionais
A maior parte das vezes, as declarações de if-then e switch têm o hábito de serem duplicadas em vários lugares dentro de uma aplicação. É comum em aplicações seguras ter diferentes funcionalidades disponíveis para usuários em determinadas funções, de modo que o código pode estar repleto de verificações do if-user-is-in-role. Outras aplicações podem ter sido estendidas para lidar com vários tipos similares mas distintos de estruturas de dados, com declarações switch() em todos os níveis do fluxo de trabalho usado para descrever as diferenças de comportamento que cada estrutura de dados deve ter. Sempre que possível, refatore esses condicionamentos usando padrões de design bem conhecidos para abstrair a duplicação em um único local dentro da base de código.
Once e Only Once pode ser considerado um subconjunto do princípio DRY.
O Princípio Aberto/Fechado só funciona quando DRY é seguido.
O Princípio de Responsabilidade Única depende de DRY.