Páginas

viernes, 4 de enero de 2008

Súper genérico

Terminé el año con un cambio de empresa y acabé en Indra (una vieja conocida), aunque he podido comprobar que hay ideas que van más allá de las empresas y me persiguen.

Hablo del caso particular de la tendencia de muchos programadores hacia lo genérico. En Cómo Produzco, mi anterior empresa, heredé el mantenimiento y desarrollo de un gestor de contenidos de mano de un Suizo que definía la aplicación como "súper súper genérica" aunque lo cierto es que aquello no tenía nada de genérico. Aquella aplicación tenía métodos con cientos de líneas de código donde abundaban los 'if' e 'if else' que hacían que los métodos fueran el anti-cristo de lo genérico. El resultado era un gestor de contenidos muy particular, nada genérico, inmantenible y hasta incompresible.

Ahora cambio de empresa y me vuelto a topar con el mismo problema. Problema que surge cuando para el programador lo prioritario es generalizar y olvida otros elementos importantes en la programación como son la modularidad, la robustez, el mantenimiento o la separación de aspectos... todo por con seguir algo 'super genérico' y que en muchos casos acaba volviendose en nuestra contra. Es lento, inmantenible, incomprensible, pero da igual, este método lo hace todo. Que necesitas una nueva funcionalidad, no pasa nada, otro parámetro de entrada, otro 'if' y ya tenemos un método aún más genérico... ves qué fácil.

Algo que gracias a Dios no estaba presente en el famoso gestor de Cómo pero que he sufrido en otros sitios es el uso indiscriminado de interfaces y clases abstractas... menuda historia también. Y es que hay personas que han escuchado campanas y no saben donde.

Por favor señores, no es pecado duplicar una línea de código. Hagan las vida más fácil al resto de programadores y olvídense de los métodos 'súper súper genéricos'.

"Un buen programador siempre piensa en lo que viene, pero no se vuelve loco por generalizarlo todo, sabe generalizar lo que realmente vale la pena generalizar." Brian W. Kernighan, Rob Pike