Acabo de darle una pequeña revisada –una vez mas– a las herramientas arriba mencionadas, es que cada cierto tiempo voy viendo sus facilidades, y bueno, en el trabajo usamos algunas, dependiendo del caso o necesidad…
De por si el uso de una herramienta de generación de código ayuda considerablemente en todo lo relacionado a código que puede considerarse repetible o muchas veces “tonto”, aqui me refiero a las partes de conexión a base de datos, uso de stored procedures o incluso partes que siempre son repetibles si se usan alternativas ORM como Entity Framework u otros…
Pero bueno, de por si las facilidades brindadas por un generador de código es una filosofía mas que interesante, pero creo que este tema ya ha sido cubierto muchas veces, asi que por hoy no lo tocaremos.
Estaba usando el CodeSmith por un tiempo y que puedo decirles? que es genial!!, puede generar lo que sea, si tienes claro el modelo de trabajo, es decir, la configuración de una plantilla, la cual contiene una parte variable (la que nos ayudará a generar el código) que en base a parámetros y un poco de programacion .net nos genera lo que sea!
Mas que una demo, les recomiendo descarguen la versión de prueba y bueno, revisen la sección Examples / Basic Samples / CSharp para que noten la facilidad para generar rápidamente algunas cosas interesantes.
En la imagen de la derecha puede observarse el explorador de plantillas del CodeSmith y como pueden notar es considerablemente similar al IDE del Visual Studio, asi que la familiaridad de herramienta, ayudará un poco.
Lo interesante del asunto es que hay ejemplos de generación de código en varios frameworks como CSLA o NHibernate.
Entre lo positivo que podría resaltar es que la filosofía de esta herramienta es generar lo que sea desde una plantilla de texto plano configurada vía parametros y mientras mas programes en .net para generar texto plano, pues mucho mejor!
Lo negativo a mencionar es inicialmente, que su versión de pruebas es de 30 días (aunque la solucion rápida de un amigo fue pedir de nuevo un key de pruebas…) y por otro lado, a pesar de que veo que su comunidad es activa, a veces busco información y pues, me quedo en el aire con la duda (por suerte tengo amigos que saben bastante y me ayudan con ello, pero tampoco deberia ser asi, no?)
Por otro lado y luego de mucho tiempo, volví a descargar el IronSpeed Designer, muy interesante, con su pantalla inicial preguntándote “qué theme le pondrías a tu aplicación a generar?”, quedé pasmado pensando… “por qué no ponen eso en otras aplicaciones?”
De por si la configuración es bastante amigable, desde qué colores quieres incluir en las pantallas a generarse (asi es, pantallas!) hasta qué tabla quieres usar, lo cual considero mínino necesario en una buena aplicación de este rubro.
Lo que debo resaltar aqui como positivo es que el entorno es amigable y directo, es decir, necesito generar esto, punto final =D.
Y bueno una nueva característica de esta versión es que puedes configurar el diseño de la interfaz generada, desde el logo del header al texto del footer… como dije, entorno amigable.
Lo negativo del asunto es que a pesar que la generación de las fuentes ha mejorado considerablemente, pues el mantenimiento de las mismas, lo veo un poco engorroso, solo puedo decirles, que se genera tooodo en una capa =S, aunque claro estoy usando la version Free, bastante limitada en lo que respecta a numero de tablas y páginas a generar.
En general que les puedo decir? La verdad es que ambas herramientas son muy buenas! claro ambas tienen un costo, pero si podría recomendarles algo, les preguntaría, exactamente qué buscan?
– Ya que, si se trata de mantenimientos rápidos, como a veces sucede en algunos proyectos, empresas pequeñas o incluso curiosidades que me podría pedir hasta mi abuelo, pues IronSpeed, hasta el Free les puede servir, ya que a pesar que limitan la cantidad de tablas (no mas de 15) y páginas que tengan que generarse (no más de 30), es algo que puede superarse
– Si estamos hablando de una aplicación mas empresarial (por asi decirlo) en la cual se necesite una distribución orientada a servicios, o quizá los requerimientos del usuario incluyan específicamente utilización de LINQ, NHibernate, CSLA, capas… pues CodeSmith te puede generar lo que quieras!
– Ahora, si tenemos la limitante del costo por las licencias, pues la mejor alternativa, es el AJGenesis del buen Angel “Java” Lopez.
Aqui la filosofia que se maneja es la que debería seguir todo motor de generación de código, permitir generar cualquier tipo de código a raiz de una plantilla configurable/programable.
De por si el AJGenesis es un mundo por explorar, que a su vez, no deja de ser sencillo de aprender, pero bueno, ese es tema de otro post o desde ya, les recomiendo revisen la documentacion que pueden encontrar en el blog del Java Lopez!
Y ya para despedirme, pues les adelanto que tengo en mente un podcast relacionado, veamos que sucede, no?
Un Saludo!
@jersson