Generadores automáticos de código [cerrado]

13

A uno de mis colegas le gusta usar generadores automáticos de código, que crean grandes cantidades de código que están mal documentados y son muy difíciles de mantener.

¿El costo de usar un generador de código vale la molestia de mantenimiento, por el tiempo reducido para la creación?

    
pregunta Mumbles 04.10.2010 - 17:23

4 respuestas

10

Vamos a reformular eso:

  

¿Vale la pena el costo de un buen generador de código automático?

Sí.

  

¿El costo de un generador de código automático deficiente genera más trabajo para todos los demás, pero vale la pena el autor?

Absolutamente no. No hay excusa para el mal código. Si alguien quiere ser inteligente y usar la generación automática de código, debe tomarse el tiempo para asegurarse de que el código generado sea un buen código. De lo contrario, ¿qué sentido tiene? Solo está empujando la pelota por el camino y cuando se trata de la producción de código, la pelota debe detenerse en el desarrollador que la escribió.

    
respondido por el wheaties 04.10.2010 - 17:26
23

El código generado por un generador nunca debe mantenerse a mano. Si necesita ser cambiado, entonces el generador y / o sus configuraciones deben ser ajustados y ejecutados nuevamente. Teniendo en cuenta eso, no importa si el código resultante es incomprensible e indocumentado, siempre y cuando el mecanismo de generación en sí sea claro como el cristal. (Asegúrese de documentar el hecho de que el código se genera, y dónde está el generador y cómo funciona).

Analogía: si bien el procesador de mi computadora siempre está ejecutando el código de la máquina, no necesito saber nada al respecto, siempre que sepa cómo crear ese código de la máquina utilizando un compilador y lenguaje de alto nivel. He escuchado que GCC a veces produce un código de máquina mediocre, pero a quién le importa, siempre y cuando funcione perfectamente. Las capas de abstracción de la base de datos producen SQL para operar con el motor de base de datos, pero ¿a quién le importa cómo se ve ese SQL, siempre y cuando la capa de abstracción sea clara y funcione?

Cuando se usan correctamente, los generadores de código definitivamente pueden guardar no solo la creación, sino también los costos de mantenimiento.

    
respondido por el Joonas Pulakka 04.10.2010 - 17:27
6

Un generador de código es un tipo de compilador. No te preocupes por lo bonita que es la salida del compilador, solo trabajas con el código fuente. Usarlo y luego modificar manualmente la salida es a menudo más difícil que solo escribirlo desde cero en una forma comprensible para los humanos, y significa que no puede usar el generador de código nuevamente sin mucho trabajo, ya que tendrá que aplicar el mismos cambios al mismo código incomprensible con precisión.

Por lo tanto, pueden estar bien si son parte del proceso de compilación y se documentan como tales. La entrada al generador es, entonces, el código fuente, y lo que produzca son resultados intermedios, que no se deben alterar.

Sin embargo, si alguien está usando uno para producir un código incomprensible que se supone que debe usarse como fuente, entonces esa persona está produciendo un código incorrecto. No importa si la persona está produciendo un código incorrecto de forma mecánica o de forma manual, sigue siendo un código incorrecto y todavía tiene un problema de calidad.

Por lo tanto, debe tratar esto como cualquier otro desarrollador que corte esquinas y escriba código incorrecto. No sé cómo manejas eso en tu tienda.

    
respondido por el David Thornley 04.10.2010 - 20:14
3

A partir de los comentarios sobre otras respuestas, parece que estás preguntando sobre los estándares del equipo en lugar de los generadores de código en sí mismos.

Una herramienta de generación de código debe incluirse en el proyecto y (cuando sea apropiado) debe ser parte del proceso de construcción. Un ejemplo sería que en nuestro equipo utilizamos Subsonic 2.2, que generamos clases a partir de los objetos de la base de datos en la compilación.

El exe que hace esto está registrado en SVN como parte del proyecto para que un nuevo miembro del equipo pueda obtener el nuevo proyecto de svn y compilarlo inmediatamente sin tener que averiguar de dónde provienen todas estas clases de base de datos En este ejemplo, ni siquiera incluimos el código generado en svn).

    
respondido por el Rob Stevenson-Leggett 04.10.2010 - 18:01

Lea otras preguntas en las etiquetas