El principio Don’t Repeat Yourself (DRY) establece que la duplicación en la lógica debe ser eliminada a través de la abstracción; la duplicación en el proceso debe ser eliminada a través de la automatización. La duplicación es un desperdicio. Añadir código adicional e innecesario a una base de código aumenta la cantidad de trabajo necesario para ampliar y mantener el software en el futuro. El código duplicado aumenta la deuda técnica. Ya sea que la duplicación provenga de la programación de copiar y pegar o de una mala comprensión de cómo aplicar la abstracción, disminuye la calidad del código. La duplicación en el proceso también es un desperdicio si se puede automatizar. Las pruebas manuales, la construcción manual y los procesos de integración, etc. deben ser eliminados siempre que sea posible mediante el uso de la automatización.
Condicionales sospechosos
A menudo, las sentencias if-then y switch tienen la costumbre de ser duplicadas en múltiples lugares dentro de una aplicación. Es común en las aplicaciones seguras tener diferentes funcionalidades disponibles para los usuarios en ciertos roles, por lo que el código puede estar lleno de comprobaciones de si el usuario está en el rol. Otras aplicaciones pueden haber sido extendidas para tratar con varios tipos de estructuras de datos similares pero distintos, con sentencias switch() en todos los niveles del flujo de trabajo utilizadas para describir las diferencias en el comportamiento que debe tener cada estructura de datos. Siempre que sea posible, refactorice estos condicionales utilizando patrones de diseño bien conocidos para abstraer la duplicación en una sola ubicación dentro de la base de código.
Una vez y sólo una vez puede considerarse un subconjunto del principio DRY.
El principio abierto/cerrado sólo funciona cuando se sigue DRY.
El principio de responsabilidad única se basa en DRY.