Las plantillas T4 son basura

Por muchos años he usado StringTemplate como motor de plantillas para la generación automática de código por su sencillez, elegancia y su increíblemente bien pensada separación entre lógica y plantilla. En StringTemplate uno no pude mezclar código con segmentos de plantilla y eso hace que las plantillas sean limpias, claras y totalmente independientes de cualquier lenguaje o plataforma (lamentablemente requieren un runtime).

Por motivos que escapan a mi libre elección, últimamente he tenido que utilizar plantillas T4 para generar algunos módulos del sistema en que trabajo a partir de metadatos almacenados en XMLs, la verdad es que es una experiencia horrorosa. Todo ese código mezclado con el output utilizando distintos tipos de tags (<# <#= <#+) que exponen la el sistema de cañerias es una pesadilla. La solución aparente es refactorizar las platillas para separar lo más posible el código de los segmentos de salida pero la verdad es que luego de un gran esfuerzo, si bien ya no provoca vómitos, sigue generando náuseas.

A los creadores les preguntaría: ¿qué hemos hecho para merecer esto?

Sin categoría

10 thoughts on “Las plantillas T4 son basura

  1. Que sea diferente a tu forma habitual de trabajar no quiere decir que sea peor. Simplemente es más flexible a cambio de sacrificar la legibilidad del código.

    Tachar de basura las plantillas T4 sólo porque su aprendizaje es difícil, no me parece correcto.

    Por cierto, la cuestion con la que terminas el post, es la misma que le haría a tus padres cada vez que tengo que leer uno de tus artículos.

  2. Se agradecería un post más argumentado que tu simple experiencia. Más que nada por que sino podríamos pensar que lo que es una basura son tus conocimientos y manejo de T4.

    ¿Algún ejemplo de como StringTemplate resuelve un problema concreto mejor que T4?.

    Un saludo.

  3. @Lucas, pues son una vuelta a ASP con todos los problemas que ello trae, pero son cuidado y cariño, te dan alguna que otra alegria.

    @Visitante casual, tu comentario es lo mejor del post !!!

    Salu2

  4. Al título del post creo que le falta algo más… quizás un «para mi…» y así no generalizas.. 🙂

    No tengo experiencia ninguna con T4, tan solo un evento online en el que participé.. pero no recuerdo ya cuantos generadores he usado en toda mi carrera profesional..

    El de Angel «java» Lopez, myGeneration, uno creado por mi para NEO (un ORM).. y otros cuantos. Hay unos que dejan mejor sabor que otros.. pero en la mayoría de los casos si algo no nos gusta a la vista, puede ser más por desconocimiento a la hora de hacer las cosas que por deficiencias del generador..

    En mi humilde punto de vista.. y de manera muy particular, si no tienes tiempo a buscar información sobre T4 en internet, hubiera agradecido más un POST al estilo de, «Con StringTemplate hago esto así… y con T4 asao. Ventajas, desventajas…» 🙂

    Anímate, seguro aprendemos todos… 😉

  5. Recuerdo en mi juventud y con ansias de abarcar todo (y tambien por necesidades del momento), dejar C y ponerme a currar con VisualBasic 3 …4 …5…6
    Recuerdo, las maldiciones y cabreos supinos a la hora de ver la ineficiencia y algun que otro «bug» que tenian y que me jorobaban todo el rato, pero al final, me di cuenta, que parte de ese cabreo se debia a mi «ignorancia» del entorno que estaba usando y pese, a que no es un lenguaje al 100% efectivo, si, al menos, conociendolo bien, se podia hacer las cosas mejor y sin cabrearse tanto y lo mas importante.. no transmitir ese estado pesimo a los demas, ya que cuando, te encontrabas ante otro mas profesional que tu, acababas siendo el «palurdo que va de listo y que cae por bocazas»…
    es solo una sugerencia… ya que no es la primera vez que leo un comentario tuyo , haciendo de eso.. de «bocazas» (creo recordar, que en uno de ellos, supistes retractarte correctamente)

  6. @Javier, estoy de acuerdo, son útiles y te brindan un abanico de posibilidades bastante interesantes. No obstante, son horribles.

    @Un Visitante: el aprendizaje no es nada complejo, es más, cualquiera que haya usado ASP lo entiende a la primera. Yo diría que es súmamente fácil. Lo tacho de basura porque comparado con, por ejemplo, StringTemplate, es ilegible y dificil de mantener.
    Por otra parte, solo aclararte que estoy no es nada personal.

    @Rodrigo: podés pensar lo que quieras o podés googlear acerca de StringTemplate para ver como se resuelven las cosas con este último. Esta es una entrada de opinión.

    @El Bruno: sí, estoy de acuerdo es similar a ASP y con cariño te pueden dar algunas alegrias.

    @Omar: todo lo que escribo en mi blog lleva implícito ese «para mi» que reclamas. De hecho esta es una entrada de opinión (personal). En un principio pensé en escribir sobre ventajas y desventajas pero inferí que cualquiera que hubiese utilizado T4 entendería el punto. El problema aparentemente es que en la generalidad de los casos T4 es lo único que conocen y por lo tanto no pueden entender mi punto. Quizás deba escribir al respecto.

    @NombreRequerido: hagamos lo siguiente, compara T4 con otros motores y luego, si aún piensas que es la mejor opción, quizás tengas un punto para criticar mi opinión. Pregunat: ¿Es muy importante para vos que me retracte de lo que pienso?

  7. El 100% de personas que dejaron un comentario hasta ahora te tilda de ignorante. Tambien hay que destacar que, ese mismo 100% NO conoce StringTemplate.

  8. Carlos… No conozco el stringtemplate ya que abarco otras cosas, pero no por ello, puedo considerarlo «una basura» , solo porque «una» persona opine tan críticamente sobre el asunto, y repito, no es la primera vez que le veo «despotricar» sobre algo, quizás, le falte tacto o sutileza para exponer las cosas. Puede, demostrar su frustración al empleo de una herramienta/lenguaje/Paradigma que siempre viene bien para que los demás podamos obtener una idea, pero, no como la expone.
    Ontivero… no es importante para mi, simplemente, demuestra el grado de saber estar y de demostrar que no somos perfectos. Repito, puede ser que en parte tengas razón, pero no expones argumentos válidos al respecto, solo, es como si lo hubieras probado la primera vez y que dentro de tu ignorancia del producto, lo critiques ahora, para mas tarde descubrir que estabas «equivocado».. date cuenta, que estas metiéndote con los «profesionales» que han creado esto y que , aunque no sea la panacea para lo que tu lo utilizas, si ha habido un interés en crear algo para usarlo.

  9. «Puede, demostrar su frustración al empleo de una herramienta/lenguaje/Paradigma que siempre viene bien para que los demás podamos obtener una idea, pero, no como la expone.»

    Bueeeeena, y vos quien sos para decir quien puede o cómo debe exponer sus ideas.. ¿el Moderador anónimo de los Blogs de Opinión en Internet?

Responder a omarvr Cancelar respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *