No te repitas ( DRY , oa veces no te repitas ) es un principio de desarrollo de software que busca reducir la repetición de patrones de software, [1] reemplazándolo con abstracciones o usando la normalización de datos para evitar la redundancia.
El principio DRY se establece como "Todo 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 . [2] Lo aplican de manera bastante amplia para incluir " esquemas de base de datos , planes de prueba , el sistema de compilación , incluso documentación ". [3]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.
Alternativas
MOJADO
Las violaciones de DRY se denominan típicamente soluciones WET, comúnmente tomadas como "escribir todo dos veces" [4] (alternativamente, "escribir todo el tiempo", "disfrutamos escribiendo" o "desperdiciamos el tiempo de 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] [6] [7]
AHA
Otro enfoque de las abstracciones es el principio AHA. AHA significa "Evitar abstracciones apresuradas", descrito por Kent C. Dodds como optimizar para el cambio primero y evitar la optimización prematura. [8] y fue influenciado por Sandi Metz "prefiere la duplicación sobre la abstracción incorrecta". [9] y
AHA se basa en el entendimiento de que cuanto más profunda es la inversión que hemos realizado en la abstracción de una pieza de software, más percibimos que el costo de esa inversión nunca podrá recuperarse ( falacia del costo hundido ). Por lo tanto, los ingenieros tienden a continuar iterando en la misma abstracción cada vez que cambia el requisito. La programación de AHA asume que las soluciones WET y DRY inevitablemente crean software que es 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 se necesita, o cuando la duplicación en sí se ha convertido en la barrera y se sabe cómo se necesita la abstracción. funcionar.
Ver también
- Principio de abstracción (programación)
- Duplicación de código
- Reutilización de código
- Copiar y pegar programación
- Normalización y desnormalización de bases de datos
- Duplicación de disco
- Redundancia (ingeniería)
- Regla de tres (programación de computadoras)
- Separación de intereses
- Fuente única de verdad (SSOT / SPOT)
- Programación estructurada
- Dos o más, use a para
- No lo vas a necesitar
Referencias
- ^ Foote, Steven (2014). Aprendiendo a programar . Addison-Wesley Professional. pag. 336. ISBN 9780133795226.
- ^ Hunt, Andrew; Thomas, David (1999). El programador pragmático: de jornalero a maestro (1 ed.). Estados Unidos: Addison-Wesley. págs. 320 . ISBN 978-0201616224.
- ^ Dave Thomas, entrevistado por Bill Venners (10 de octubre de 2003). "Ortogonalidad y el principio DRY" . Consultado el 1 de diciembre de 2006 .
- ^ Pai, praseed; Xavier, Shine (31 de enero de 2017). Patrones de diseño de .NET . Packt Publishing Ltd. ISBN 978-1-78646-186-5.
- ^ Justin Lee (8 de marzo de 2006). "DRY es para perdedores" . Consultado el 31 de agosto de 2013 .
- ^ Alex Papadimoulis (8 de diciembre de 2011). "El carro WET" . Consultado el 21 de mayo de 2012 .
- ^ Kevin Greer (5 de febrero de 2016). "ESPUMA SECA + HÚMEDA" . Consultado el 9 de marzo de 2016 .
- ^ Kent C. Dodds (1 de abril de 2019). "Programación AHA" . Consultado el 8 de mayo de 2021 .
- ^ Sandi Metz (20 de enero de 2016). "La abstracción equivocada" . Consultado el 8 de mayo de 2021 .
enlaces externos
- No se repita en WikiWikiWeb
- Una vez y solo una vez en WikiWikiWeb
- 97 cosas que todo programador debe saber (O'Reilly)
- El mito de la normalización excesiva (discusión de extremos académicos frente a escenarios de bases de datos del mundo real)
- Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, Guy RT, et al. (2014). "Mejores prácticas para la informática científica" . PLoS Biol . 12 (1): e1001745. arXiv : 1210.0530 . doi : 10.1371 / journal.pbio.1001745 .
No te repitas a ti mismo (ni a otros)