Lombok 到底应不应该使用?

2019-05-08 14:01:00 +08:00
 cmower

之前写了一篇《干啥呢,Lombok 》,读者反响还不错。

有一些批评的声音:使用 Lombok 等于强 X 了你的队友,他们也必须使用,否则代码就编译不通过。

但我自己的体验是,省去 getter/setter 似乎真的很省心。

V 站的朋友们,你们觉得呢?

12837 次点击
所在节点    Java
80 条回复
jinue9900
2019-05-08 16:08:31 +08:00
@thisisgpy 但是要装插件才能实现自动生成 get set 不然一片红。
其实 lombok 不止 get set 构造器 toString 建筑者模式也很有用 log 也很有用
thisisgpy
2019-05-08 16:15:01 +08:00
@jinue9900 我只是想说,既然 Spring 大佬都推荐了,该用就用。如果项目实际情况不允许,那就不用。
eternaldzw
2019-05-08 17:16:13 +08:00
这个应该是团队大佬决定的事情
bk201
2019-05-08 17:21:21 +08:00
lombok 我记得是有坑在里面的
nycbdwss
2019-05-08 17:41:50 +08:00
新项目用到了 一开始不知道干啥的 但是装了插件以后用的真的狠爽
th00000
2019-05-08 17:48:54 +08:00
我觉得 Lombok 除了简化代码外, 暂时算是 Amber 正式发布前的替代品, 如果能使用 Lombok, 相信 Amber 这么大的福利立刻就会被团队所接受吧。
smeraldo
2019-05-08 17:54:47 +08:00
用不用 lombok ?这种 tradeoff 无关紧要,完全可以团队投票决定

> 使用 Lombok 等于强 X 了你的队友,他们也必须使用,否则代码就编译不通过
ide 是会报错,但是在 build tools 正确引入的话是可以编译的

@Sendya #9 @RequiredArgsConstructor 代替普通的 constructor injection,就像 field injection 一样,用上瘾了很容易会产生 code smell
wc951
2019-05-08 18:09:09 +08:00
@RequiredArgsConstructor 这个注解有点坑爹啊,虽然 @Autowired 可以加上去但是 @Qualifier 没生效,还是不能完全代替手写,而且 onConstructor 里面写注解是实验性的,按官网的说法是之后 jdk 版本的 javac 可能编译出错
passerbytiny
2019-05-08 18:19:35 +08:00
@wc951 #26 啥时候 @RequiredArgsConstructor 回自动加 @Autowired 了,这是 Spring 自动给构造器加 @Autowired,跟 Lombok 无关。Lombok 只负责自动加构造器,别参杂其它的,你要参杂了,不用专职评审给你扣分,有可能维护你代码的人看到了后就要干你。
palfortime
2019-05-08 18:28:50 +08:00
我认为那种在 facade 包里用 lombok 的才是 QJ
hhhsuan
2019-05-08 18:29:49 +08:00
不用,用 kotlin
wm5d8b
2019-05-08 19:33:32 +08:00
为什么队友必须用?就算用记事本也能编译通过
kevinhwang
2019-05-08 19:36:05 +08:00
个人很反感用这种干预语法糖的插件。如果团队决定要用我建议换语言。反正 Java 慢慢要死掉的。
luozic
2019-05-08 19:40:50 +08:00
代码 少就是正义,少才错误少,要不 ts kotlin 也就不会这么火了
waising
2019-05-08 19:50:26 +08:00
@adzchao 你看不懂我回复内容?
hengyunabc
2019-05-08 19:51:07 +08:00
spring 本身并不喜欢使用 Lombok,这里有一个去掉 Lombok 的 issue: https://github.com/spring-projects/spring-session/issues/702

另外在某个 spring 的工程里,明确提到不喜欢用 Lombok,忘记在哪里了。

在 spring boot 工程里,可以找到一些支持 Lombok 的代码: https://github.com/spring-projects/spring-boot/search?q=Lombok&type=Code

Lombok 带来的负担要超出大部分人的想像。另外,并不是所有人都会用 IDE 的,强制别人用 IDE 才能正常打开你的代码,非常的不友好。
lihongjie0209
2019-05-08 19:59:17 +08:00
你能想到的功能 ide 代码生成 和 live template 都有解决方案
chendy
2019-05-08 20:14:12 +08:00
不存在应不应该,毕竟 lombok 没有强大到非用不可,也没有坑到没法用,所以大家肯定各执一词。所以:

1. 自己的项目,喜欢用就用,不喜欢用就不用
2. 团队的项目,大家决定用不用,或者老大决定用不用

没了
anzhongyu
2019-05-08 20:20:05 +08:00
个人觉得 Lombok 不算侵入性很强的,开发还是能带来很大便利
chendy
2019-05-08 20:23:56 +08:00
@hengyunabc
1. spring 团队绝对不讨厌 lombok,starter 里有 lombok 选项,他们自己的项目里也有用 lombok (记得是 data 的一些项目),而且那个 issue 貌似是说方便跑 sample
2. 因为 lombok 的操作超过了 annotation processor API 的限制,所以其他 annotation processor 项目需要特殊处理它,spring-boot-configuration-processor 是个 annotation-processor,所以需要特殊处理 lombok

所以其实 lombok 带来的最大的负担是给其他写 annotation processor 的人的,跟普通开发者没啥关系

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/562185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX