Principios KISS, DRY y YAGNI

KISS, DRY y YAGNI son tres principios que podemos aplicar en el diseño y el desarrollo de software, y que a pesar de tratarlos juntos en esta entrada, no guardan ninguna relación entre si más allá de la importancia y simplicidad de su mensaje.

Principios de diseño

A mi modo de ver, estos tres principios pueden ser tratados como tres magníficos consejos para compartir con los desarrolladores más noveles, e incluso a veces con algunos mucho más experimentados.

KISS

KISS es un principio de diseño muy popular tanto en el desarrollo de software como en otros muchos ámbitos. Es el acrónimo de «Keep It Simple, Stupid», y es una forma coloquial de decir que las cosas sencillas funcionan mejor.

Es uno de los mejores consejos se le puede dar a cualquier persona que diseñe o cree algo, ya sea relacionado con el desarrollo del software o no: hazlo sencillo, evita complicaciones innecesarias.

Y ya centrándonos en el desarrollo de software, evitar aumentar el nivel de complejidad cuando no es estrictamente necesario trae consigo múltiples ventajas, entre las que destacar la mejora de la comprensión y el mantenimiento, sin olvidar la sensación de satisfacción de haber escrito un código elegante.

No seguir este principio, en cambio, propiciará tener una estructura y un código engorroso y con olores. Si eres lector habitual de este blog, recordarás que hace varios meses escribíamos sobre el código limpio en el artículo ¿A qué huele el código fuente?, dónde mencionábamos la complejidad innecesaria como un motivo de olor.

A modo anecdótico añadir que KISS es un principio que no proviene del desarrollo de software, su origen se atribuye al ingeniero aeroespacial americano Kelly Jonhson, quien contribuyó al desarrollo de varias aeronaves para el ejército de su país.

DRY

DRY hace énfasis en la importancia de evitar la duplicidad en el código fuente, siendo el acrónimo de «Don’t repeat yourself» y estando sustentado por la afirmación de que cada pedazo de código debe tener una representación única, inequívoca y autoritaria en el sistema.

Los padres de DRY son Andy Hunt y Dave Thomas, quienes publicaron este principio en el libro The Pragmatic Programmer, en 1999, y del que en el momento de escribir estas líneas han publicado una edición conmemorativa del veinte aniversario.

Es un principio que está estrechamente ligado con la calidad del código y que, al igual que sucede con KISS, también mencionamos en el artículo ¿A qué huele el código fuente?.

Y cuando no cumplimos con el principio DRY, se suele decir que cumplimos con el principio WET, por el juego de palabras en inglés, dónde WET sería el acrónimo de «write every time» o «we enjoy typing».

YAGNI

Tercer principio, tercer consejo y para cerrar el círculo tercer acrónimo, en este caso de «You aren’t gonna need it».

Este principio invita a no desarrollar «por si a caso», ¿cuantas veces nos han pedido una funcionalidad determinada y hemos excedido los requisitos en previsión de algo que nunca ocurrió? Pues bien, YAGNI propone hacer exclusivamente lo solicitado y necesario.

YAGNI tiene su origen en la programación extrema, dónde prima la simplicidad y dónde se opta por no invertir tiempo en dar solución a necesidades todavía inexistentes. La programación extrema se guían por la afirmación «Do The Simplest Thing That Could Possibly Work», de la cual han creado un acrónimo DTSTTCPW que desde mi punto de vista excede lo razonable y roza el absurdo.

Este principio es sin duda alguna el que más me ha costado aceptar de los tres que hemos visto hoy, de hecho, aunque estoy muy de acuerdo con él y creo que por norma general deberíamos cumplirlo, considero que la intuición de un desarrollador o un analista suficientemente experimentado, en combinación de un profundo conocimiento del negocio y del cliente, pueden dar pie a que nos saltemos este principio en ocasiones puntuales.

Créditos, referencias y artículos relacionados

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *