Páginas

martes, 31 de enero de 2012

Homogeniedad

Es un hecho el que a la hora de programar alguna aplicación nos tropecemos con muchos problemas. Muchos de estos serán repetidos, es decir, mismo problema en distinto punto de la aplicación.

¿Qué sucede cuando uno se encuentra por segunda vez con un problema que ya ha resuelto en otro punto de la aplicación/código?
  • Podemos acudir a nuestra primera solución y a ser posible no duplicar el código para que tengamos en un mismo punto la solución a distintos problemas del mismo tipo.
  • Podemos dar de nuevo solución al problema ignorando la primera solución porque, por ejemplo, se nos ha ocurrido una mejor implementación.

Suele pasar que cuando nos enfrentamos una segunda o tercera vez con el mismo problema se nos ocurra una mejor forma de implementar la solución. En este caso creo que es un error implementar una nueva solución aunque esta sea mejor que la anterior. De lo que se trata es de evitar tener dos problemas del mismo tipo con dos soluciones distintas. Si decides implementar una segunda solución tienes que modificar el código ya escrito para que todos los problemas de dicho tipo tengan la misma nueva solución (fácil si se ha centralizado es punto del código). Si este paso es muy costoso, homogeneizar la solución, olvídalo y sigue con la implementación actual por que lo que sí será costoso en un futuro será mantener un código donde cada cual y según el momento decidió implementar una solución distinta para el mismo problema.

Por otro lado, y aunque parezca raro, también se da el caso de tener varios problemas implementados con la misma solución. ¿Como se llega a esta punto? Fácil. Tras encontrarse con el segundo problema, distinto al primero se decide que aunque distinto es parecido así que se decide introducir unas pequeñas modificaciones (normalmente introduciendo cláusulas if y más parámetros en la llada) en la primera solución. Esto suele sucede en los programadores empeñados en "generalizar" código y puede acabar en un método con infinitas líneas y llenos de if. No es de extrañar luego que hagas algunas modificaciones para que el código también resuelva un nuevo problema y que la hacerlo dejen de funcionar otros dos.

Por eso, que digo yo, y esto es sólo una opinión, señores:
  • Mismo problema: misma solución
  • Distintos problemas: distintas soluciones.