Etiquetas: , , ,

El principio KISS te invita a mantener todo lo más sencillo posible. Y es que la mayoría de los sistemas funcionan mejor cuando son simples. E incluso cuando dejan de funcionar, es más rápido entender el motivo y solucionarlo. Todo son ventajas. El problema es que ironicamente, a veces desarrollar la solución de un problema complejo de forma simple no es sencillo.

A modo de navaja de ockham, cuando existen varias formas de llegar al mismo resultado, la más sencilla siempre es la mejor opción. Y para esto también hace falta un poco de auto crítica. Si a mitad de un desarrollo te das cuenta de que no entiendes bien que hace tu código, es momento de parar y pensar si no se puede hacer más sencillo e intuitivo. De lo contrario, tendrás muchos problemas para mantenerlo y evolucionarlo.

Estos serían los mandamientos KISS:

  • No tiene sentido aumentar infinitamente el nivel de abstracción. Hay que encontrar un equilibrio.
  • No incluyas una librería enorme si solo quieres una de sus funciones, o si la vas a usar para algo fácilmente implementable. He visto gente usar librerías matematicas enormes y super complejas solamente para determinar si un número es par o impar. Esto literalmente se puede calcular con una línea de código y funciones nativas.
  • Siempre que puedas, descompón lo complejo en varias partes simples, esto está muy relacionado con DRY y la S de SOLID.
  • No siempre hace falta una precisión absoluta o un nivel de detalle pormenorizado. Se coherente con lo que necesitas.

A parte de todo esto, un principio que ayuda mucho a cumplir con KISS y con DRY es el principio YAGNI, del que hablamos más extensamente en esta entrada, pero que simplificando mucho dice que no hagas nada que no estes seguro que vas a necesitar (YAGNI es el acrónimo de You Aren’t Gonna Need It).

Un código simple es más fácil de mantener, más flexible y sencillo de ampliar y modificar. Hace que encontrar errores sea mucho más sencillo y en general, es una buena práctica que a la larga te ahorrará mucho tiempo y esfuerzo.

Categorías: