usar una tutorial seleccionada oxygen obtener los interfaz instalar grafica fila español ejemplos datos como codigo java .net database code-generation

java - una - ¿Generas código? Si es así, ¿qué usas y qué generas?



windowbuilder eclipse oxygen (27)

He usado MyGeneration, y me encanta generar código que use Data Access Applicaiton Blocks de Microsoft para mi Data Access Layer, y mantener mis conceptos de base de datos sincronizados con el dominio que estoy modelando. Sin embargo, un fin de semana tomó una curva de aprendizaje más empinada de lo esperado para hacerlo productivo.

Me pregunto qué están haciendo otros en relación con la generación de código.

http://www.mygenerationsoftware.com

http://www.codesmithtools.com/

¿Otros?

En 2000, más o menos, la empresa para la que trabajaba utilizaba un producto de Veritas Software (creo que era) para modelar componentes y generar código que integraba componentes (dlls). No obtuve mucha experiencia con él, pero parece que la generación de código ha sido el "santo grial" durante mucho tiempo. ¿Es práctico? ¿Cómo lo están usando otros?

¡Gracias!



Consideraría dañina la generación de código ya que satura la base de código sin agregar nueva lógica o conocimiento. Idealmente, uno debe elevar el nivel de abstracción, usar archivos de datos, plantillas o macros, etc. para evitar generar grandes cantidades de código de placa de caldera. Te ayuda a hacer las cosas rápidamente, pero puede dañar el mantenimiento a largo plazo.

Si su lenguaje de programación elegido se vuelve mucho menos doloroso al generarlo a partir de algún lenguaje de plantilla, eso parece indicar que ahorrará aún más tiempo haciendo el trabajo de nivel superior en otro lenguaje quizás más dinámico. YMMV.


Construimos nuestra generación de código de forma personalizada utilizando literales linq y XML (VB). Todavía no hemos encontrado una forma de dividir las soluciones en plantillas; sin embargo, esas dos tecnologías hacen que esta tarea sea tan trivial, no creo que lo hagamos.


Dos marcos que utilizo a menudo.

Ragel

Algo que vale la pena echarle un vistazo es Ragel . Se usa para generar código para máquinas de estado.

Simplemente agrega un marcado simple a su código fuente, luego ejecuta un generador en Ragel genera código para C, C ++, Objective-C, D, Java y Ruby, y es fácil mezclarlo con su fuente habitual.

Ragel incluso te permite ejecutar código en transiciones de estado y demás. Hace que sea fácil crear formatos de archivo y analizadores de protocolo.

Algunos proyectos notables que el usuario Ragel son, Mongrel , un gran servidor web ruby. Y Hpricot , un analizador html basado en ruby, inspirado en jQuery .

Otra gran característica de Ragel es cómo puede generar gráficos basados ​​en graphviz que visualicen sus máquinas de estado. A continuación se muestra un ejemplo tomado del artículo de Zed Shaw sobre las tablas de estado de Ragel.

Ragel State Chart http://www.zedshaw.com/tips/HelloMachine_small.png

XMLBeans

XMLBeans es un enlace xml basado en Java. Tiene un gran flujo de trabajo y lo uso a menudo.

XMLBeans procesa un esquema xml que describe su modelo, en un conjunto de clases de Java que representa ese modelo. Puede crear modelos de forma programática y luego serializarlos desde y hacia xml.


He hecho varias operaciones puntuales de generación de código usando Castor para crear código fuente de Java basado en XSD. El último uso fue crear clases de Java para una implementación de Open Travel Association. El esquema de OTA es bastante peludo y habría sido un oso para hacer a mano. Castor hizo un trabajo bastante bueno dada la complejidad del esquema.


He trabajado con CSLA y he usado codesmith para generar mi código con las plantillas de CSLA.

codesmithtools.com


He usado CodeSmith y MyGeneration, no estaba muy interesado en ninguno de los dos, me sentí un poco brusco de usar, aprendí idiomas de plantillas, etc.

SubSonic es lo que a veces usamos aquí para generar una capa de acceso a datos. Utilizado en los proyectos de tamaño adecuado, es una fantástica herramienta de ahorro de tiempo. clicky


He usado CodeSmith. Fue bastante útil.


He utilizado LLBLGen y nHibernate con éxito para generar capas Entity y DAL.


LLBLGen Pro es una excelente herramienta que le permite escribir una solución agnóstica de base de datos. Es realmente rápido recoger las características básicas. Las funciones avanzadas no son mucho más desafiantes. Le recomiendo que eche un vistazo.


Me encanta usar SubSonic . El código abierto es el camino a seguir con la generación de código, creo, porque es muy fácil modificar las plantillas y el núcleo, ya que siempre tienden a tener errores o una o dos cosas que desea hacer que no están incorporadas.


Principalmente he usado LLBLGen Pro para generar código. Ofrece una variedad de patrones para usar en la generación y puede suministrar sus propios patrones, al igual que CodeSmith. La atención al cliente ha sido excelente.

Básicamente, genero mis objetos comerciales y DAL usando LLBLGen y los mantengo actualizados. Las plantillas de código tienen secciones donde puede agregar su propia lógica que no se borrará durante la regeneración. Definitivamente vale la pena echarle un vistazo.


Si su base de datos es su modelo, SubSonic tiene un generador de código excelente que a partir de v2.1 ya no requiere ActiveRecord (puede usar el Patrón de repositorio en su lugar). Es menos flexible que otros, pero hay personalizaciones que se pueden realizar en las plantillas de stock.


También veo que la generación de código es dañina, pero solo si utilizas herramientas de terceros como codesmith y mygeneration. Tengo 2 procedimientos almacenados que generan mis objetos de dominio e interfaces de dominio

Ejemplo

GenerateDomainInterface ''TableName''

Luego solo copio y pego en Visual Studio. Funciona muy bien para esas tareas que odio hacer.


Trabajé durante cuatro años como desarrollador principal en una agencia web, ya que escribí desde cero mis primeros dos o tres sitios web, pronto me di cuenta de que sería una tarea muy aburrida hacerlo todo el tiempo. Así que comencé a escribir mi propio motor generador de sitios web.

Mi punto de partida fue este sitio http://www.codegeneration.net/ . Tomé uno de sus ejemplos para una generación de crud simple y lo extendí al nivel en el que estaba generando sitios completos con él.

Utilicé xml para la definición de varias partes del sitio web (páginas, datalists, join, tables, form management). Los sitios web generados estaban completamente separados del generador, por lo que el sitio web generado también podría modificarse a mano.

Aquí está su artículo http://www.codegeneration.net/tiki-read_article.php?articleId=19 .


Usamos Codesmith y hemos tenido un gran éxito con él. Ahora estoy tratando constantemente de encontrar dónde podemos implementar plantillas para acelerar procesos mundanos.


Utilicé la generación de código para las funciones de swizzle en una biblioteca de vectores matemáticos. Usé un script PERL personalizado para ello. Ninguno de los generadores FLOSS que miré parecía adecuado para la creación de funciones Swizzle

Generalmente uso plantillas C ++, en lugar de generación de código.


Python .

He usado MyGeneration que usa C # para escribir sus plantillas de código. Sin embargo, comencé a usar Python y descubrí que puedo escribir código que genera otro código más rápido en ese idioma que si estuviera escrito en C #. Posteriormente, he usado Python para codificar gen C #, TSQL y VB.

En general, el código que genera otro código tiende a ser más difícil de seguir por su propia naturaleza. La sintaxis más limpia de Python ayuda tremendamente haciéndola más legible y más fácil de mantener que el equivalente en C #.


En la compañía escribimos la nuestra para generar la mayoría de nuestras clases de entidad / dalc / business y los procedimientos almacenados relacionados, ya que nos llevó poco tiempo y teníamos algunos requisitos especiales. Aunque estoy seguro de que podríamos haber logrado lo mismo con un generador existente, fue un pequeño proyecto divertido en el que trabajar.

Codesmith ha sido recomendado por muchas personas y parece ser bueno. Personalmente, todo lo que necesito de un generador de código es facilitar la modificación de las plantillas.


Escribí una utilidad donde especifica una tabla y genera un desencadenador de Oracle que registra todos los cambios en esa tabla. Hace que el registro sea realmente simple.

Hay otro que escribí que genera una clase Delphi que modela cualquier tabla de base de datos que le proporciones, pero considero que es un olor codicioso para hacer eso, así que rara vez lo uso.


Utilizo las herramientas de hibernación en myEclipse para generar modelos de dominio y código DAO a partir de mi modelo de datos. Parece funcionar bastante bien (hay algunos problemas si escribes métodos personalizados en tus DAO, estos parecen perderse en las sobreescrituras), pero en general parece funcionar bastante bien, especialmente en conjunción con Spring.


codesmith para .net


¡SubSonic es genial! La capacidad de consulta es fácil de comprender, y la implementación del procedimiento almacenado es realmente impresionante. Podría seguir y seguir. Te hace productivo al instante.


Principalmente codifico en C # y cuando necesito generación de código lo hago en XLST cuando la fuente puede simplemente convertirse a XML o un script de ruby ​​cuando es más complejo.

Si la parte de generación de código necesita modificaciones frecuentes por más de unos pocos desarrolladores, CodeSmith funciona bastante bien (y es más fácil de aprender que XSLT o Ruby por los nuevos desarrolladores).


Durante algún tiempo, he usado un lenguaje de script / plantilla propio para la generación de código. (He usado ese lenguaje en su mayor parte solo por el uso de mi pequeño proyecto para mascotas)

Recientemente, he creado algunos scripts SQL * PLUS para crear código de acceso a la base de datos (no Hibernate para nosotros ...)


La plataforma ágil de Outsystems se puede utilizar para generar aplicaciones C # y Java de fuente abierta y bien documentadas. Debido a que también tiene varias características relacionadas con la implementación, la administración y el cambio, la mayoría de las personas terminan utilizándolo no solo para generar el código, sino también para administrar el ciclo de vida completo de las aplicaciones web.


MyGeneration todo el camino!

MyGeneration es un generador de código basado en plantillas extremadamente flexible escrito en Microsoft.NET. MyGeneration es excelente para generar código para arquitecturas ORM. Los metadatos de su base de datos están disponibles para las plantillas a través de la API MyMeta.