Como desarrollo de servicios de fondo de alto nivel, y por qué otros no recomiendan el uso de Lombok, hablar de mis puntos de vista ...

Lombok es una herramienta muy útil herramientas Java de terceros que pueden ayudar a los desarrolladores de Java para eliminar códigos largos, especialmente para los objetos Java simples (POJO).

Lombok nos ha traído comodidad, pero también trajo no poco riesgo.

Dado que muchos pit mismo pisado, por lo que nunca tomo la iniciativa para recomendar a otros a usar Lombok, sin embargo, no interfirió con los demás. Y algunos de mis colegas que me rodea porque el código todavía se utiliza, por lo que me vi obligado a instalar el plug-in de Lombok.

Y ese es mi actitud hacia Lombok. Desde este tema para hablar, tenemos que analizar las características de Lombok en:

1, el uso Lombok

plug-in 1,1 IDE Lombok instalado

Actualmente Lombok es compatible con una variedad de IDE, incluyendo Eclips de corriente, Intellji IDEA, myeclipse son compatibles.

Instalación en IDEA de la siguiente manera:

Archivo → Configuración → Plug-ins, introduzca "Lombok", seleccionar "instalar" para instalarlo, es necesario reiniciar después de la instalación idea ejecutar.

1.2 introducción de sus dependencias

Lombok es compatible con el uso de múltiples herramientas para la dependencia de la importación de construcción, es actualmente el principal experto de apoyo, gardle, el apoyo de hormigas, etc.

Tal como se utiliza Maven introducido como sigue:

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.12</version>
    <scope>provided</scope>
</dependency>

1.3 de código usando anotaciones

Lombok manera de simplificar el código se logra principalmente a través de anotaciones, que se utilizan comúnmente @ de datos, Getter @ / @ Setter, @ Builder, @ no nulo y así sucesivamente.

Tales como el uso anotaciones @Data, sólo tiene que definir un Java Bean:

import lombok.Data;

@Data
public class User {
    private String id;
    private String age;
    private String name;
    private String job;
}

Uso @Data anotación de la clase, de esta manera, estas propiedades de clase de entidad no es necesario para obtener, juego, y el método toString, que es útil para la clase POJO.

Significado 1,4 anotaciones

  • @Date : agregado a la clase, es equivalente a dar @ ToString, @ EqualsAndHashCode, @ Getter , @ Setter y @RequiredArgsConstrutor Estas anotaciones;
  • @AllArgsConstructor : agregado a la clase, se puede configurar para generar parámetros que contiene completa clase de entidad;
  • @NoArgsConstructor : añadido al constructor de la clase sin argumentos pueden ser generados;
  • @RequiredArgsConstructor : se ha añadido a la clase, con @NonNull anotaciones usando los parámetros especificados constructor generados. Por ejemplo, en frente de la propiedad más edad @NonNull anotación, el usuario genera un método de configuración de parámetros requiere la edad;
  • @Getter : agregado a la clase, la clase de entidad se puede generar métodos getter todas las propiedades;
  • @Setter : agregado a la clase, la clase de entidad puede ser generado setter métodos para todos los atributos;
  • @ToString : agregado a la clase, llamando al método toString (), los valores de salida de todos los atributos de la clase de entidad.
     

2, Lombok ¿Cuáles son los beneficios?

Por el ejemplo anterior, podemos encontrar, usar @Data anotación reduce en gran medida la cantidad de código, el código es muy simple, y esta es la razón principal por la que muchos desarrolladores están dispuestos a utilizar en Lombok.

No sólo eso, también citó otras ventajas Lombok:

  • Reducir el código de la plantilla: obtener procesamiento .lombok, juego, toString, hachís, igual o similar, una gran cantidad de paquete de plantillas de código, lo que reduce la duplicación de código, cuando se añaden nuevas propiedades cuando no se necesitan los métodos anteriores que ser reescrito;
  • Mejorar la legibilidad del código: se centran en las definiciones de propiedad de clase no es necesario entrar en la publicación de una pérdida de tiempo;
  • Reducir el mantenimiento del código: nuevos atributos cuando el código va a reducir una gran cantidad de trabajos de mantenimiento.

3, Lombok ningún daño?

Ya que nunca tomo la iniciativa para recomendar a otros a usar Lombok, se debe escalonar regla general muchos fosa.

Por lo tanto, vamos a hablar sobre el enfoque de Lombok en el curso de las cuales traerán problemas.

3.1 obligando a sus compañeros de equipo

los desarrolladores el uso widget de Lombok requiere correspondiente enchufe debe estar instalado en el IDE. No sólo tenemos que instalar, y su co-desarrollo de cualquier persona que requiera la instalación.

Si cualquier plug-in no está instalado, utilice el IDE para abrir un proyecto en Lombok, a continuación, se le pedirá que encontrar métodos de error, lo que resulta en la compilación del proyecto fracasa.

Más importante aún, si definimos un paquete frasco utilizado en Lombok, a continuación, todas las aplicaciones requieren todos se basan en este paquete JAR debe instalar el plug-in, que es altamente invasiva.

Únicas veces que habían decidido no utilizar su propio código en Lombok notas, pero, con el fin de compilar el proyecto todavía voy a utilizar plug-ins de Lombok.

3.2 código de depuración reducida

Lombok de hecho puede ayudar a reducir la cantidad de código, porque Lombok ayudará a generar automáticamente una gran cantidad de código.

Sin embargo, estos códigos deben ser generada solamente en tiempo de compilación, por lo que en el proceso de desarrollo, de hecho, una gran cantidad de código falta realmente.

Esto crea ciertos problemas para la depuración de código, queremos conocer un método getter de la propiedad de una clase en la que han sido citadas clases, no es tan simple.

Afecta a la versión 3.3 de actualización

Lombok códigos para una invasivo fuerte, se pueden llevar a un problema más grande que nos afecta actualizar el JDK.

Hoy en día, de acuerdo con la frecuencia de la JDK actualización cada seis meses se lanzará una nueva versión, pero Lombok como una herramienta de terceros, y es mantenido por el equipo de código abierto, no se garantiza su velocidad de iteración.

Por lo tanto, si hay que actualizar a una nueva versión del JDK tiempo, si una de las propiedades que no son compatibles en Lombok con palabras se verá afectada.

Puede traer un problema, es decir, Lombok propia actualización será limitado.

Debido a que una aplicación puede depender de un número de paquete frasco, y cada paquete frasco puede tener que depender de diferentes versiones de Lombok, lo que llevó a las necesidades de las aplicaciones que se harán en la versión de arbitraje, y sabemos, versiones de los paquetes tarro de arbitraje no es tan fácil, y la probabilidad de la ocurrencia del problema también es alta.

3.4 charla entró en boxes

Lombok proceso funcionando, si el principio subyacente para todo tipo de anotaciones no entienden las palabras, es fácil de producir resultados inesperados.

Poner un ejemplo sencillo:

Sabemos que cuando usamos @Data una definición de clase, ayudará a generar automáticamente método equals ().

Pero si sólo @Data, sin necesidad de utilizar @EqualsAndHashCode (callSuper = true), entonces por defecto es @EqualsAndHashCode (callSuper = false), esta vez generados los iguales () método compara únicamente la subclase de la propiedad, no se considerará , independientemente de los padres acceso a la propiedad de clase está abierta desde las hereda de la clase padre las propiedades, que puede obtener resultados inesperados.

3.5 podría socavar la encapsulación

Si los cuatro puntos anteriores se pueden evitar problemas artificialmente, a continuación, en el tema del paquete es una tabla corta Lombok.

Como un simple ejemplo, se define una categoría cesta de la compra:

@Data
public class ShoppingCart { 
    //商品数目
    private int itemsCount; 
    //总价格
    private double totalPrice; 
    //商品明细
    private List items = new ArrayList<>();
}

Sabemos que existe una relación antes de que el número de carros de la compra, detalles del producto y el precio total de los tres, si es necesario modificar las palabras deben ser modificados juntos.

Sin embargo, utilizamos notas @Data en Lombok, y por itemsCount TotalPrice estas dos propiedades, a pesar de que los definen como de tipo privado, sino que proporciona un captador pública, métodos setter.

métodos setter externos pueden ser modificados libremente por tanto el valor de la propiedad, podemos llamar a los métodos setter arbitrarias volver a configurar itemsCount, TotalPrice valor de la propiedad, que puede conducir a la incompatibilidad con los artículos cuyo valor de la propiedad.

Y el paquete orientado a objetos se define: por el control de acceso, ocultar datos internos, interfaz externa para acceder sólo a una clase limitada proporcionados mediante la modificación de los datos internos. Por lo tanto, el método de exposición de la moda no debe ser expuesto a una clara violación de las características orientadas a objetos del paquete.

La buena práctica no debe proporcionar captador / definidor, pero sólo para proporcionar un método addItem pública, teniendo modificar itemsCount, artículos TotalPrice así como tres propiedades.

4, resumen

Lombok anotación puede generar automáticamente el código, reduciendo en gran medida la cantidad de código, el código es muy simple.

Pero eso no significa que el uso de Lombok sin ningún problema, el uso de Lombok en el proceso, no puede ser hostil a sus compañeros de equipo, código hostil, depuración, actualización hostiles hostiles y otras cuestiones.

Aunque el uso de Lombok también conducen a problemas de encapsulación de daños, pero creo que la operación Lombok es seguida uso de Bean en mente.

Frijol determinada base de datos y cartografía clases Java Bean, Java es la definición y el uso de constructor no-argumento y establecer y obtener métodos de la Bean, y no debe ser tratado cualquier negocio en el grano tiene ninguna relación lógica.

Para concluir, mi actitud hacia Lombok es ventajas muy vagas, muy claras y desventajas, cumpliendo con el punto de vista "no uso no tendrá ningún problema", por lo que no uso, no tomará la iniciativa para recomendar a otros para su uso.

 

Por favor, permanezca Shaoxia ...ヾ(◍ ° ∇ ° ◍) Tecno ...゙ 
pulgares de bienvenida hacia arriba, comentario, más los intereses, para permitir que más gente vea aprender a ganar
más interesante, por favor preste atención a mis "Los titulares de hoy No ": notas de Java en la nube

Publicados 171 artículos originales · ganado elogios 311 · Vistas de 100.000 +

Supongo que te gusta

Origin blog.csdn.net/weixin_44259720/article/details/104897398
Recomendado
Clasificación