" No te repitas " ( DRY ) es un principio de desarrollo de software destinado a reducir la repetición de información que probablemente cambie, reemplazándola con abstracciones que tienen menos probabilidades de cambiar o utilizando la normalización de datos que evita la redundancia en primer lugar. .
El principio DRY se establece como "Cada conocimiento debe tener una representación única, inequívoca y autorizada dentro de un sistema". El principio ha sido formulado por Andy Hunt y Dave Thomas en su libro The Pragmatic Programmer . [1] Lo aplican de manera bastante amplia para incluir esquemas de bases de datos , planes de prueba , el sistema de compilación e incluso documentación . [2] Cuando el principio DRY se aplica con éxito, una modificación de cualquier elemento individual de un sistema no requiere un cambio en otros elementos lógicamente no relacionados. Además, todos los elementos que están relacionados lógicamente cambian de manera predecible y uniforme y, por lo tanto, se mantienen sincronizados . Además de utilizar métodos y subrutinas en su código, Thomas y Hunt confían en generadores de código , sistemas de compilación automática y lenguajes de secuencias de comandos para observar el principio DRY en todas las capas.
Un caso particular de DRY es el principio de elección única . Bertrand Meyer lo definió como: "Siempre que un sistema de software deba admitir un conjunto de alternativas, uno y sólo un módulo del sistema debe conocer su lista exhaustiva". [3] Se aplicó al diseñar Eiffel .
La visión opuesta a DRY se llama WET, un backronym comúnmente utilizado para escribir todo dos veces [4] (alternativamente escribir cada vez , disfrutamos escribiendo o hacemos perder el tiempo a todos ). Las soluciones WET son comunes en arquitecturas de varios niveles donde un desarrollador puede tener la tarea de, por ejemplo, agregar un campo de comentario en un formulario en una aplicación web. La cadena de texto "comentario" puede repetirse en la etiqueta, la etiqueta HTML, en el nombre de una función de lectura, una variable privada, DDL de base de datos, consultas, etc. Un enfoque DRY elimina esa redundancia mediante el uso de marcos que reducen o eliminan todas esas tareas de edición excepto las más importantes, dejando la extensibilidad de agregar nuevas variables de conocimiento en un solo lugar. [5] Esta conceptualización de "WET" como una alternativa a la programación "DRY" ha existido desde al menos 2002 en el mundo Java, aunque no se sabe quién acuñó el término. [6]
Otro enfoque de las abstracciones es el principio AHA. AHA significa evitar abstracciones apresuradas , descrito por Kent C. Dodds como optimizar primero para el cambio y evitar la optimización prematura. [7] y fue influenciado por "preferir la duplicación a la abstracción incorrecta" de Sandi Metz . [8]
La AHA se basa en el entendimiento de que cuanto más abstraen los ingenieros de inversiones de una pieza de software, más perciben que el costo de esa inversión nunca podrá recuperarse ( falacia del costo hundido ). Por lo tanto, los ingenieros tienden a continuar iterando sobre la misma abstracción cada vez que cambia el requisito. La programación AHA supone que tanto las soluciones HÚMEDAS como las SECAS crean inevitablemente un software rígido y difícil de mantener. En lugar de comenzar con una abstracción, o abstraer en un número específico de duplicaciones, el software puede ser más flexible y robusto si la abstracción se realiza cuando es necesaria, o cuando la duplicación misma se ha convertido en la barrera y se sabe cómo necesita la abstracción. funcionar.
La programación AHA fue originalmente denominada "código húmedo" por Dodds, más tarde nuevamente por Daniel Bartholomae, [9] y originalmente Matt Ryer la denominó DAMP ( No abstraiga los métodos prematuramente ). [10] Había un principio de programación diferente ya llamado DAMP ( frases descriptivas y significativas ) y descrito por Jay Fields, [11] y la comunidad rechazó el uso de MOIST, debido a la aversión cultural a la palabra húmedo . [12] Dodds pidió alternativas en Twitter y sugirió DATE como alternativa antes de decidirse por la sugerencia de Cher Scarlett de AHA. [7] [13] [14]
No te repitas (ni a los demás)