jueves, 17 de septiembre de 2009

DRY, pero no tan DRY

A la metodología de programación que busca no repetir innecesariamente código se la conoce como DRY (Don't Repeaty Yourself, No Te Repitas).


Hace unos posts escribía sobre una técnica que consistía en escribir algunas acciones básicas en el AppController, a modo de scaffolding, de modo que no necesitase escribir otra vez ese código en los nuevos controladores que iba creando.

A este post me respondía AD7six, del que había tomado la idea en un post suyo antiguo. En su comentario me hacía ver que, a la larga, me iba a encontrar con problemas a medida que los controladores empezasen a tener excepciones y que acabaría reescribiendo todo.

Por supuesto, AD7six tiene toda la razón al indicar esto, aunque yo creo que la técnica puede seguir siendo válida para  partes de las aplicaciones que sólo necesiten acciones CRUD muy básicas (como mantenimiento de listas de opciones, categorías, etc). En realidad, también se podría usar el scaffolding.

¿Qué solución tenemos a esta situación en la que el código es repetitivo y sin embargo no debería dejarse en un método genérico?

Pues la respuesta es Bake, la utilidad de líneas de comandos para generar Modelos, Controladores y Vistas en CakePHP.

¿Y si no te gusta el código que genera? Pues a aprender a crear tus propias task para montar controladores, y modelos. Y plantillas para las vistas.

De este modo, podemos combinar lo mejor de ambos mundos: no tener que escribir 20 veces el mismo código (lo hace bake) y poder adaptarlo según sea necesario.

No hay comentarios: