También conocido como YAGNI por sus siglas, o en español como "no vas a necesitarlo", es la frase que uso constantemente para frenar mis "excesos de entusiasmo" y mucho más, el de otros. Es lo que no deja que mi código crezca sin motivo alguno, y me hace diferir de todos los que no paran con su "¿y qué tal si mañana...?".
La definición es bien simple: YAGNI es el principio que dicta que los programadores no deben añadir funcionalidad hasta que no sea necesario. Es la regla de oro para mantener las cosas simples y bajo control. YAGNI te mantiene enfocado en lo que realmente importa, dejando todo lo demás para el momento adecuado. Y a muchos les encanta (myself included), pero otros lo ignoran, o peor aún, lo critican en aras de lo que llaman "flexibilidad" o "capacidad de adaptación".
Y cada uno tiene su libro y sus razones. Y cada caso tiene excepciones, pero la regla es bien simple: código pensando en mañana es código de más... que hay que mantener, que puede no funcionar, que hace que las cosas sean más complejas. Ejemplos hay miles, y todos hemos visto el código que aún está allí esperando "para cuando cambiemos de SQL Server a Oracle", y esas clases "por si mañana distribuímos la aplicación en múltiples servidores", o mejor aún, "para cuando la cantidad de usuarios no quepa en un valor entero".
Y cuidado... no se pueden confundir conceptos y dejar en casa la razón. Las reglas se aplican con sentido, y en muchos casos hay que sacar un balance de qué cosa es realmente necesario hacer. Cuando hay algo que obviamente tiene que pasar, preparar el código para cuando llegue el momento es el paso correcto. Código incompleto o mal hecho tras la bandera de YAGNI es peor que una cucaracha en el desayuno.
Pero de ahí en fuera, no más de lo que toca. Menos es igual a mejor. Más limpio, más claro, menos errores, y más espacio en disco duro. ¿Y qué pasa cuando haya que cambiar el proveedor de la base de datos? Believe me, you ain't gonna need it.
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.