31 de agosto de 2007

Templates compilados?

Hoy, luego de asistir a una charla en el "MUG" dictada por el "maestro" Angel sobre generación de código y su excelente "ajgenesis", me quede "tildado" en la relación entre templates, código "vivo" y su actualización de forma dinámica. Ya que uno de los grandes problemas de la "generación de código" es la actualización del código generado, sobre todo si estamos produciendo software de una forma incremental. O sea, si actualizamos el "template", como "brodcastiamos" o difundimos eso en el "código" ya generado, y por sobre todo no pisamos el "ajuste fino" que hicimos sobre él.

Por otro lado, habitualmente para generar un template en alguna herrmienta de generación de código lo que hago es reemplazar las partes "variables" de un codigo en el lenguaje original que estoy trabajando y lo reemplazo por los token que me da el generador. O sea algo así:

"EditPersona" se transforma en "Edit${NombreEntidad}".

Esto implica abrir el notepad buscar "Persona" y reemplazarlo por "Edit${NombreEntidad}". Esto sucede cada vez que cambio mi código "fuente", o sino debo agregar a "pelo" en el template lo que modifique sin garantía de que este código este compilado. Demás esta decir que si son muchas las variables a reemplazar y muchos los templates a actualizar el trabajo se torna largo, y tedioso.

Lo ideal sería entonces que:
  1. El template "compilara".
  2. Que en el proceso de re-generación no pisará nuestro "ajuste fino".
Lo que les dejó aquí es una especie de "prueba de concepto" que me gustaría profundizar con la opinión de ustedes. Solamente atacá el primer problema, ya que es un mero ejemplo que más que ofrecer una solución lo pongo para explorar una idea. Esta realizado simplemente con NAnt y algún "truquillo" en el código c#.

Para usarlo simplemente tenemos que respetar que las variables/string que queremos reemplazar empiezen con "_" y terminen con "0", (se pueden elegir otros que c# permita) , lanzar el build de NAnt (GeneraEntidad) y luego recargar el proyecto. El único problema es que deberán comentar el código de cada generación de entidad ya que NAnt NO "puede"!!! sobreescribir sus propiedades.

Los comentarios estan abiertos para opinar

1 comentario:

Luis Petek dijo...

Claudio, que bueno para todos nosotros que vos te quedaste tildado con este tema de la reutilización de código, con la generación automática.
No pude encontrar la forma de bajar el código que generaste. Yo me tome el atrevimiento de postear en la lista de http://groups.google.com/group/codegeneration el link a tu blog para que todos puedan pensar en esa linea.
Me entusiasma la visión mas madura que tienes sobre la generación de código.
Si quieres unirte al grupo en formación, te lo agradeceremos mucho.
Saludos, Luis Petek.