9 de septiembre de 2009

Antipatrones

Steven R. Covey menciona en su libro "El poder de los 7 hábitos" que una manera efectiva de estudiar algo es estudiar su opuesto.

Bueno, mientras que al tema de los patrones (especialmente los de diseño) se le ha dedicado una gran cantidad de "lip service" durante los últimos años, un tema paralelo y en mi opinión, igualmente importante, es el de los antipatrones.

¿Qué es un antipatrón?

Un antipatrón es una solución común que se da a problemas recurrentes en un contexto dado, que trae consecuencias negativas para el proyecto en el que se aplican.

En otras palabras y como decimos en México: el remedio es peor que la enfermedad.

¿Porqué es importante el estudio y difusión del conocimiento en antipatrones? ¡¡Porqué desgraciadamente son mucho más comunes de lo que deberían ser!!

Estas "soluciones", son consideradas como alternativas viables por muchos profesionales e incluso, algunos han hecho de ellos una forma de vida.

Para muestra basta un botón:

Programación de copiar y pegar (copy and paste programming):
Programar copiando y modificando código existente en lugar de crear soluciones genéricas.

Ahora bien, todos lo hemos hecho, ¿o no? y todos deberíamos saber a estas alturas las consecuencias de hacerlo de manera indiscriminada durante algún periodo de tiempo:

  • Redundancia innecesaria
  • Mayor complejidad inherente
  • Pobre mantenibilidad
  • Alta propensión a errores, etcétera

Sin embargo, hace pocos años tuve una compañera de trabajo que a los nuevos programadores que entraban a su cargo los adiestraba con su "metodología" de desarrollo, más o menos así:

Bajas el módulo X del control de versiones y haces una copia. Le cambias el nombre al módulo y lo pegas en el proyecto donde lo vayas a ocupar. Después te copias el texto del módulo "globales" del proyecto original y lo pegas todo en el "globales" de tu proyecto y comentas todas las variables. Después comienzas a descomentarlas una por una hasta que compile bien.

Lo que intento decir es que algunos de los problemas que describen los antipatrones son cosas que hacemos todos los días sin darnos cuenta de las consecuencias que traerán al proyecto. Algunas las hemos hecho desde que aprendimos a programar. Algunas nos fueron enseñadas explícitamente por nuestros maestros y otras han estado con nosotros desde los albores de la programación.

La única forma de detener la diseminación de estas malas prácticas es la educación, tomando responsabilidad de nuestra propia práctica como profesionales.

En futuras entradas, tengo la intención de discutir con mayor detalle algunos de los antipatrones conocidos. Hasta entonces, les dejo algunos links:

No hay comentarios:

Publicar un comentario