Lombok !
爱它的人爱的要死,觉得它简直就是先进生产力的代表;讨厌它的人讨厌的要死,觉得它简直就是邪恶世界的轴心。今天松哥也小心翼翼的来和大家聊一聊这个话题:Java 开发中,到底该不该用 Lombok?
Lombok 简介
Lombok 并不是一个新的项目,相反,它已经有了一段并不算短的历史了,但是关于 Lombok 的争议一直就没有停止过,我们先来看看它是什么东西?
根据 Lombok 官网的介绍:
Lombok 是一个 java 库,可以自动插入编辑器并构建工具,为我们的 java 增添色彩,让开发者告别繁杂的 getter/setter 以及 equals 等方法,一个注解就可以使我们的类具有一个功能齐全的构建器。
咋一看,还是挺诱人的,我相信大家做 Java 开发对于样板化的代码 getter/setter 早已经不厌其烦,虽然可以使用开发工具自动生成,可是看那一大堆代码还是觉得有点烦,看到有人推荐 Kotlin,Kotlin 做 Android 还行,代替 Java 做企业级应用?呵呵。 Lombok 则可以帮助开发者简化样板代码,举一个简单的例子,原来你的一个 Java Bean 可能是这样:
public class User{
private String name;
private Long id;
private String address;
//getter/setter/toString/hashCode。。。
}
使用了 Lombok 之后,你的 Java Bean 就可以简化成这样了:
@Data
public class User{
private String name;
private Long id;
private String address;
}
添加一个 @Data 注解,项目在编译器编译时通过操作 AST (抽象语法树) 来自动生成 getter/setter 、toString 、hashCode 等方法,利用这一特性,甚至可以像 JavaScript 一样不用显式声明变量类型:
val list = new ArrayList<User>();
list.add(new User());
这样的代码最终会被编译成:
final ArrayList<User></User> list = new ArrayList<User>();
list.add(new User());
等等还有很多其他的语法糖,像 @Cleanup、@Builder 等都是简化代码的能手,我这里只是随便的举两个例子。
因为这些代码都是编译之后才有的,所以开发者如果需要在 Java 代码中调用某一个对象的 get 方法(或者其他自动生成的方法),还需要引入一些开发工具的插件,才可以解决这个问题,这个我就不细说了,大伙有兴趣可以自行搜索了解下。
事情就是这么个事情,工具就是这么个工具,那么开发中到底用不用呢?
用还是不用?
支持使用 Lombok 的小伙伴,主要是觉得:
•使用了 Lombok 之后,代码干净整洁•开发人员的工作量大大降低•在一些刚立项的项目中,Bean 反复变化,要不停的修改了代码,要是有了 Lombok ,就不必这么麻烦了•这是先进生产力的代表,不会用的都是太菜
反对 Lombok 的小伙伴当然也有自己的看法:
•这是歪门邪道,扰乱人的思路•调试不便•开发工具本来就可以一键生成•一个第三方插件不应该改变 JAVA 语法
如果你在论坛上搜一下对于这个插件的看法,感觉世界大战都快要爆发了!
你的意见
那么今天松哥来做一个简单的问卷,你是否支持在你的项目中使用 Lombok?
往期文章一览
1、提高性能,MySQL 读写分离环境搭建(二)
2、两年了,我写了这些干货!
3、想和大家谈一点合作
4、一个Java程序猿眼中的前后端分离以及Vue.js入门
5、跟着平台混了四年,现在要单飞了!
本文分享自微信公众号 - 江南一点雨(a_javaboy)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。