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

2年前 (2022) 程序员胖胖胖虎阿
240 0 0

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 就可以简化成这样了:

@Datapublic 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?


Java 开发中到底该不该用 Lombok?
Java 开发中到底该不该用 Lombok?
关注牧码小子,后台回复 Java ,领取松哥为你精心准备的Java干货!
Java 开发中到底该不该用 Lombok?

往期文章一览

1、提高性能,MySQL  读写分离环境搭建(二)

2、两年了,我写了这些干货!

3、想和大家谈一点合作

4、一个Java程序猿眼中的前后端分离以及Vue.js入门

5、跟着平台混了四年,现在要单飞了!

Java 开发中到底该不该用 Lombok?
你点的每个在看,我都认真当成了喜欢

本文分享自微信公众号 - 江南一点雨(a_javaboy)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

版权声明:程序员胖胖胖虎阿 发表于 2022年10月11日 上午5:16。
转载请注明:Java 开发中到底该不该用 Lombok? | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...