2010-04-11 23 views
13

¿Ofrece Project Lombok algún beneficio en comparación con las plantillas de código/generación de código en Eclipse? ¿Hay algún inconveniente (aparte de incluir el .jar) ?.Proyecto Lombok vs. Eclipse plantillas/generación de código

+1

En la actualidad, la única necesidad de tiempo de ejecución para el frasco es si utiliza @SneakyThrows. Para todas las otras funciones, solo necesita el jar en tiempo de compilación. –

+0

Se parece mucho a SpringRoo pero es mucho más simple. –

Respuesta

21

Una ventaja de Lombok es que una vez que ha anotado una clase con, por ejemplo, la anotación @Data, nunca necesita regenerar el código cuando realiza cambios. Por ejemplo, si agrega un nuevo campo, @Data incluiría automáticamente ese campo en los métodos equals, hashCode y toString. Tendrá que hacer ese cambio manualmente cuando use los métodos generados por Eclipse. Algunas veces, es posible que prefiera el control manual pero, en la mayoría de los casos, espero que no.

4

Muy pocos vienen a la mente:

  • que se basa en la anotación, por lo que no es bueno para el proyecto legado todavía en pre-Java5 (delombok puede ayudar). En realidad, requiere usar el compilador javac v1.6.
  • todavía tienen limitaciones regarding multiple constructors

La cuestión de la dependencia no debe pasarse por alto, sin embargo, pero se han excluido de su pregunta.

12

La ventaja de Lombok es que el código no está realmente allí, es decir, las clases son mucho más legibles y no están desordenadas.

+0

Si el código no está allí, ¿cómo se compila en eclipse? – javaguy

+0

@javaguy - se conecta al compilador, por lo que recuerdo. – Bozho

+0

@javaguy El código está 'allí' en el archivo .class (generado por lombok), 'no está allí' como texto en su archivo .java, eliminando así gran cantidad de placa de caldera y desorden. – Ivin

6

Ventajas:

  • muy fácil de usar
  • clases son mucho más limpia ('sin código repetitivo'), especialmente 'struct'-como las clases internas reducir al mínimo:

    @Data private class AttrValue { private String attribute; private MyType value; }

    Esto creará getters y setters, un toString() y métodos hash()/equals() correctos que incluyen ambas variables. La variante con @Value crea una estructura inmutable (sin setters, todos los campos son definitivos).

  • No hay necesidad de generar/eliminar código cuando cambia campos (captadores, setters, toString, hachís, es igual)
  • hay interferencia con los métodos de codificación manual: sólo tiene que añadir es el propietario colocador específica a la clase cuando sea necesario.Lombok salta esto y genera todo lo demás

Desventajas:

  • Sin nombre refactorización, sin embargo: el cambio de nombre value anterior no (todavía) renombrar getValue() y setValue()
  • mayo ralentiza ecplise ligeramente
  • toString salida no tan agradable como, por ejemplo, ToStringBuilder de apache commons
0

Eclipse EMF ofrece algunas características que son muy práctico, que Lombock todavía no soporta:

  • potentes mechanims de notificación para informarse acerca de los cambios en las instancias
  • API genérica sin java reflexión. Acceda y modifique instancias sin una referencia fuerte al tipo
  • Edición basada en comandos y API
  • Referencias cruzadas entre modelos: Cree y cargue árboles de modelos y EMF maneje la carga mediante la creación de un proxy para la referencia cruzada. Esto ahorra memoria y el rendimiento impulso en enormes árboles de dominio
  • Y mucho más ...
Cuestiones relacionadas