Java 开发中到底该不该用 Lombok?

2019-05-17 16:28:56 浏览数 (1)

Lombok !

爱它的人爱的要死,觉得它简直就是先进生产力的代表;讨厌它的人讨厌的要死,觉得它简直就是邪恶世界的轴心。今天松哥也小心翼翼的来和大家聊一聊这个话题:Java 开发中,到底该不该用 Lombok?

Lombok 简介

Lombok 并不是一个新的项目,相反,它已经有了一段并不算短的历史了,但是关于 Lombok 的争议一直就没有停止过,我们先来看看它是什么东西?

根据 Lombok 官网的介绍:

Lombok 是一个 java 库,可以自动插入编辑器并构建工具,为我们的 java 增添色彩,让开发者告别繁杂的 getter/setter 以及 equals 等方法,一个注解就可以使我们的类具有一个功能齐全的构建器。

咋一看,还是挺诱人的,我相信大家做 Java 开发对于样板化的代码 getter/setter 早已经不厌其烦,虽然可以使用开发工具自动生成,可是看那一大堆代码还是觉得有点烦,看到有人推荐 Kotlin,Kotlin 做 Android 还行,代替 Java 做企业级应用?呵呵。 Lombok 则可以帮助开发者简化样板代码,举一个简单的例子,原来你的一个 Java Bean 可能是这样:

代码语言:javascript复制
public class User{    private String name;    private Long id;    private String address;    //getter/setter/toString/hashCode。。。}

使用了 Lombok 之后,你的 Java Bean 就可以简化成这样了:

代码语言:javascript复制
@Datapublic class User{    private String name;    private Long id;    private String address;}

添加一个 @Data 注解,项目在编译器编译时通过操作 AST (抽象语法树) 来自动生成 getter/setter 、toString 、hashCode 等方法,利用这一特性,甚至可以像 JavaScript 一样不用显式声明变量类型:

代码语言:javascript复制
val list = new ArrayList<User>();list.add(new User());

这样的代码最终会被编译成:

代码语言:javascript复制
final ArrayList<User></User> list = new ArrayList<User>();list.add(new User());

等等还有很多其他的语法糖,像 @Cleanup、@Builder 等都是简化代码的能手,我这里只是随便的举两个例子。

因为这些代码都是编译之后才有的,所以开发者如果需要在 Java 代码中调用某一个对象的 get 方法(或者其他自动生成的方法),还需要引入一些开发工具的插件,才可以解决这个问题,这个我就不细说了,大伙有兴趣可以自行搜索了解下。

事情就是这么个事情,工具就是这么个工具,那么开发中到底用不用呢?

用还是不用?

支持使用 Lombok 的小伙伴,主要是觉得:

•使用了 Lombok 之后,代码干净整洁•开发人员的工作量大大降低•在一些刚立项的项目中,Bean 反复变化,要不停的修改了代码,要是有了 Lombok ,就不必这么麻烦了•这是先进生产力的代表,不会用的都是太菜

反对 Lombok 的小伙伴当然也有自己的看法:

•这是歪门邪道,扰乱人的思路•调试不便•开发工具本来就可以一键生成•一个第三方插件不应该改变 JAVA 语法

如果你在论坛上搜一下对于这个插件的看法,感觉世界大战都快要爆发了!

你的意见

那么今天松哥来做一个简单的问卷,你是否支持在你的项目中使用 Lombok?

0 人点赞