是推荐用还是禁止用啊?
1
jzmws 2020-07-30 13:48:04 +08:00
个人不推荐使用 , 只要你用了这个东西我也必须安装这个东西 (看代码就要配置 ide 了 ) , 第二点代码是给人看的,多一个 get/set 方法根本不影响 ,如果少了这个阅读不方便. 第三点这个不兼容,idea 2020 有个莫名其妙的 bug
|
2
Reficul 2020-07-30 13:54:15 +08:00 35
可能只有 Java Boy 觉得一堆 Getter/Setter/equal/hash 不影响阅读
|
3
keshawnvan 2020-07-30 14:01:12 +08:00
看部门吧,我们这边可以用。
不过不推荐上来加个 @Data |
4
RyanArthur 2020-07-30 14:01:35 +08:00
坐标美团,我们组是全员用的
|
5
Mogugugugu 2020-07-30 14:03:29 +08:00 1
2020.2 升级后 卸载 Lombok 、重启 IDEA,然后重新安装 Lombok 之后就能用了。每次追新之后 看着项目一片红就脑阔疼...
|
6
HangoX 2020-07-30 14:05:07 +08:00
主要是插件不稳定,这点好蛋疼
|
7
defage 2020-07-30 14:05:29 +08:00
以前我也是不推荐用的。
不过随着 lombok 插件的普及,基本上用 Java IDE 的都知道这么个东西了, 所以现在这个问题基本不存在了, 可以用起来了。 |
8
duoglas 2020-07-30 14:10:07 +08:00 1
不使用 一堆 Getter/Setter/equal/hash IDE 就能生成,不因为这种莫名其妙的理由强制扩散。
|
9
qiyuey 2020-07-30 14:30:55 +08:00 2
上 Kotlin,不需要 lombok 了
|
10
xuanbg 2020-07-30 14:41:20 +08:00
一般都禁止使用
|
11
ChanKc 2020-07-30 14:41:52 +08:00 via Android
搭车问
那些喜欢用 lombok 的是不是也很喜欢 JavaScript 的 object 的设计 |
12
luhongfei66 2020-07-30 14:49:21 +08:00 6
@Reficul 为什么一堆 Getter/Setter/equal/hash 会影响阅读呢? 你们是会把逻辑放到实体类进去吗?
|
13
cco 2020-07-30 14:50:41 +08:00
我们公司全员都在使用,即使是 IDE 也是 eclipse 和 idea,这两个都可以安装。目前还没遇到就是不装插件,就是不用的同事,基本上大多数入职都一直在用,没用过的也真香了。
|
14
orangeD 2020-07-30 15:04:31 +08:00 1
装个插件也就不到一分钟的事,自从用了 lombok 以后就离不开了,看见一大坨 getter/setter 就恶心。
|
15
luckyrayyy 2020-07-30 15:05:34 +08:00
二线公司禁止,实体类都用 kotlin 写的。
|
16
Sharuru 2020-07-30 15:07:58 +08:00
根据项目规范按需使用,通常来说没有特别要求的情况下可以使用,默认使用。
但不推荐直接使用 Data 注解。 |
17
gwybiaim 2020-07-30 15:13:10 +08:00
阿里巴巴(菜鸟、淘宝某些业务),爱奇艺、美团很多部门都在用
|
18
Reficul 2020-07-30 15:56:36 +08:00 2
@luhongfei66
10 个字段不到的类, 加上那一条龙就 200 行上去了。 每次加一个字段我还要眯着眼睛找到 tostring,equal,hash 去重新生成一次。 要是不影响阅读体验,那为啥 Groovy / Kotlin 都自动生成这些方法? 说不影响阅读体验的,能这么想的也就 Java 土著了吧,所谓看惯了就好了,语言影响思维。 |
19
luhongfei66 2020-07-30 16:16:04 +08:00 4
@Reficul 你的 toString,equal,hash 全都是手动修改,而不是自动生成的吗?这种是活该你眯着眼睛找啊,不会用工具要学啊。自动生成只是为了不影响阅读吗?不是更大的是为了省事吗?主次都分不清,别自己立个靶子在那打,学会点思考,好吗?
|
20
Reficul 2020-07-30 16:28:45 +08:00 5
|
21
cjlmwcy 2020-07-30 16:28:56 +08:00 1
@luhongfei66 老哥, @Reficul 说的是自动生成后,字段修改了要重新生成
|
23
cubecube 2020-07-30 16:49:22 +08:00
看小团队 leader 品味了。个人不太喜欢,不过项目在用。
这个东西最主要的就是扩散了,一人用,全部都用。 |
25
Jooooooooo 2020-07-30 16:52:04 +08:00 1
看部门, 我们不用
运行的东西和你在 idea 里面看见的东西不一样 而且看不出来 lombok 带来的好处是什么 |
26
harde 2020-07-30 16:57:18 +08:00
以前互黑好歹是语言互黑,现在发展到连个插件、库都能开始互黑了么?
|
27
DebugTy 2020-07-30 17:01:14 +08:00
lombok 挺好用的自带的 builder 注解真香, 吐槽装插件的大可不必
|
30
luhongfei66 2020-07-30 18:04:27 +08:00
@Reficul ctrl + f 是搜索功能,会用吗?眯咪眼?
|
31
Reficul 2020-07-30 18:23:22 +08:00
|
32
luhongfei66 2020-07-30 18:27:26 +08:00 1
@Reficul 咪咪眼需要眯着眼来找,这还用说吗,去学习下怎么使用工具,咪咪眼?
|
33
supermoonie 2020-07-30 18:33:08 +08:00 via iPhone
业务项目可用,核心以及公共项目禁用
|
34
Reficul 2020-07-30 18:34:14 +08:00
|
35
luhongfei66 2020-07-30 18:37:53 +08:00 3
@Reficul 抱歉,原来重复你的话来说对你是一种人生(身)攻击,没想到那话是你的自嘲,是我没眼力见了,不会拉黑你的,这么有趣的人,希望能看到多点你的名言
|
36
bigbigeggs 2020-07-30 20:48:36 +08:00
不给用。有的时候 toString 有很多敏感信息,需要加密才能打印日志
|
37
talen666 2020-07-30 20:56:08 +08:00
用了真香,新增字段,也不用去生成 Set Get 方法了
|
38
echo1937 2020-07-30 21:25:34 +08:00
@bigbigeggs #36 你单独重载一个 toString 不就好了
|
39
monkeyk 2020-07-30 23:21:45 +08:00 1
阿里研发是不允许使用的
|
40
mio4 2020-07-30 23:23:45 +08:00
pdd 在用
|
41
wiix 2020-07-30 23:56:42 +08:00 6
实践中没发现省了多少功夫,反倒是引来了不少坑。
getter,setter 有快捷键。 tostring 有父类 tostringbuilder,极少数需要定制的 lombok 也帮不上忙。 equal 、hash 一般也用不上,用到时不是有 id 么?自动生成的一是很可能性能差,二是正确性信不过。 而且 lombok 会带来种种潜在的继承问题,还有跟一些依赖序列化的框架有说不清的冲突…… 最搞笑的是有人老是拿修改属性名称时有 lombok 会会很方便: 不想写 pojo 里的 getset,能省的了重写调用里面的 getset 吗? repository 里的方法名、 @query 、xml 里 sql 中的名名能跟着变吗?然而这些才是修改 /重构时的重头戏,pojo 类里的反倒不值一提…… 当然,如果你写的项目简简单单的用个 @Data 就能解决问题,上面的当我没说。 |
43
kilen3a 2020-07-31 00:53:08 +08:00
@luckyrayyy 那么这比用 lombok 强多了,看着 IDE 的提示就烦
|
46
laike9m 2020-07-31 02:21:38 +08:00
为什么不试试 AutoValue 呢?
https://www.baeldung.com/introduction-to-autovalue |
47
mreasonyang 2020-07-31 02:43:15 +08:00 via iPhone 1
@laike9m 机制不一样,lombok 是直接魔改原字节码,所以比 AutoValue 这类生成新 class 的方案使用起来更方便
|
48
nicevar 2020-07-31 08:05:58 +08:00
见过很多公司用,没有什么不好的,我就很反感用什么 getter/setter 快捷键,需要多余操作,生成一堆碍眼的代码,还不如用 Kotlin
|
49
Qlccks2 2020-07-31 08:30:43 +08:00 via iPhone
前段时间一些公众号集中发不要使用 Lombok 。有一个问题不解,说没有 get/set 影响阅读,关键是 get/set 有什么可读的?
|
50
Mirage09 2020-07-31 08:34:21 +08:00 via iPhone
在用,而且是 IntelliJ IDEA setup 的基本操作。
|
51
hxy91819 2020-07-31 09:25:58 +08:00 2
|
52
lpgph 2020-07-31 09:26:09 +08:00
@luhongfei66 业务逻辑确实放到 DO 中了 现在微服务基本上会考虑 DDD CQRS 纯粹贫血模式不用考虑那么多 随便都可以 但是内容多了就得考虑代码整洁方便阅读 这时候要么切换 kotlin 要么上 lombok 比较好些
|
54
vcode 2020-07-31 09:35:47 +08:00
还有人不用????恐怖如斯
|
55
la2la 2020-07-31 09:39:34 +08:00
不是 Leader 的感觉不用关心这个,公司大家用,自己就用,大家不用就不用呗。要是自己负责一个独立的项目,那就看自己习惯呗。但是前提使使用前对 lombok 常见的使用技巧和坑有清醒的认识
|
56
victorywangzhcn 2020-07-31 09:44:23 +08:00 1
@monkeyk 你是阿里哪个部门?淘系表示没有这个要求
|
57
ph228228 2020-07-31 10:07:54 +08:00
一堆 get/set 看着就烦,代码简洁点不好吗
|
58
alexzsh 2020-07-31 10:11:22 +08:00
@victorywangzhcn 淘系没有+1
|
59
fcten 2020-07-31 10:31:02 +08:00
淘系在用。说不上推荐但是只要有人用了你就不能不用。。。
|
60
Kilerd 2020-07-31 10:31:38 +08:00
可能也就那种以代码行数为 KPI 的人才会拥护不使用 Lombok 这东西吧
|
61
aragakiyuii 2020-07-31 10:39:05 +08:00
这种不都是看 leader 嘛。。反正是要用的话就都得用
|
62
Reficul 2020-07-31 10:57:33 +08:00
|
64
tairan2006 2020-07-31 11:05:09 +08:00
@hxy91819 builder 坑很多啊,用 Accessor 不好么
|
65
joyhub2140 2020-07-31 11:10:32 +08:00
公司的项目,我不反对用 Lombok,毕竟对效率有那么一丁点的提升,但是我自己的项目,绝对不用,这是个人选择哈。
|
66
luhongfei66 2020-07-31 11:12:14 +08:00
@lpgph 嗯,能真正落地 DDD 的是会影响大些
|
67
yamasa 2020-07-31 11:28:41 +08:00
除非是业务上真的很难实现,个人真的很讨厌搞一堆 setter 到处调。又丑又容易把状态搞乱,宁愿多写几个 constructor 或者次之 builder,然后 tm 老老实实的给我 immutable 吧。
|
69
CoderGeek 2020-07-31 11:38:11 +08:00
组内统一 用啥就行
|
70
guagusi 2020-07-31 12:04:19 +08:00
@luhongfei66 贫血跟充血了解一下,领域模型再了解一下
|
73
yamasa 2020-07-31 17:24:01 +08:00
|
74
leeUp 2020-07-31 19:14:40 +08:00
java 土著,java 废眼,这地图炮开的的🙄
|
75
122006 2020-07-31 19:24:19 +08:00
其实最好有个插件能把 setget 方法隐藏起来就好了
|
77
Reficul 2020-08-01 00:13:15 +08:00
@hecz
同意你说的后半句,攻击语言的评论的确是不友好(除了对楼上那个老哥的攻击我不抱有任何抱歉以外),但是我不同意你说的前半句。 冗余就是不好的,简单比复杂好。2L 的吐槽来自生活,除了原生写 Java/还处在对内存失控恐惧中那些 Cpp 转 Java 的人,接手 Java 项目不被困扰的。退一万步说,可能 Lombok 是有传染的问题,但是这只是说明这个解决问题的方案不够好,不代表这个问题不存在。 另外我对团队要不要用 Lombok 的态度是中立的。因为这是仁者见仁的东西,嗓门大的规则定好了就定好了没啥好说的,我接手的项目就不让用,那就不用呗。 但是,要我定规则,那就是用 Lombok 或者上 Kotlin 。 |
78
Reficul 2020-08-01 00:16:06 +08:00
fix typo:
“接手 Java 项目不被困扰的” -> “接手 Java 项目(没有)不被困扰的” |
79
zzl22100048 2020-08-01 01:38:59 +08:00 via iPhone
lombok 用之前还是要有规范的,总会有人把这个依赖放 complie,用 provided 的话不会扩散
|
80
lightingtime 2020-08-01 01:47:20 +08:00
用的理由是方便开发,不用的理由是啥?想单独定制的就单独拿出来写就好了啊,类上写好注释还方便维护。
|
81
wiix 2020-08-01 01:49:52 +08:00
@lxk11153 org.apache.commons.lang3.builder.ToStringBuilder
commons lang 里的一个工具。 |
83
jorneyr 2020-08-01 07:22:30 +08:00
我曾经有一个表单,使用的 Bean 已经有 50 多个属性了 (都是 getter, setter 访问,有的 setter 还有手写的逻辑),由于是遗留项目,只好在原来的 Bean 上增加新的属性,有一次增加了一个属性,忘了写 getter setter,导致怎么测试都不对,最后搞了半天才发现忘记 getter setter 了,那以后新项目都推荐使用 Lombok 了,代码简洁,尽量避免低级错误吧。
使用 Lombok 的缺点无非就是 IDE 里需要安装插件,几分钟的事而已,但也不能滥用,我们只允许使用 @Getter @Setter 注解,@ToString 尽量不用,测试输出时使用 Utils.toJson(xxx) 好了。 |
84
aguesuka 2020-08-01 09:07:47 +08:00
就我个人而言,如果是为了省几行代码,直接上 java14 或者 kotlin 更好
|
85
blless 2020-08-01 09:35:47 +08:00 via Android
🌚虽然我不是 java 仔,但是我似乎已经看见一条 java 的分裂路线了
|
86
ganning 2020-08-01 10:25:39 +08:00
使用 lombok 也没有禁止生成 /使用 get/set 。。。。就看个人风格还是团队风格了。
|
87
iweisi 2020-08-01 10:46:30 +08:00 1
一个 get set 都吵,这么在乎细节,看来项目质量肯定很棒哦
|
88
MakHoCheung 2020-08-01 12:20:38 +08:00 via iPhone 2
我是菜鸡,我用 public
|
89
cheng6563 2020-08-01 12:50:40 +08:00 via Android
其实挺方案这种直接改语法的插件的,但无奈 getter setter 太臭了
|
90
iyangyuan 2020-08-01 17:18:02 +08:00 via iPhone
多一事不如少一事,不用不会出问题,用了可能会出问题
|
91
andj4cn 2020-08-02 10:32:35 +08:00
|
92
hecz 2020-08-02 15:51:37 +08:00
@Reficul 你说的定规则的观点我同意,这种东西要么就全用,要么就全都不用,定完规则按照规则走就行。简单当然比复杂好,但是还是得看场景的,比如之前的 beanUtils 类,试用起来确实方便,但是也会新增一些性能问题
|
93
yuekcc 2020-08-02 20:09:14 +08:00
曾经在一个项目上用过,代码确实整洁了。但是后面全部改回手写的 getter/setter 了,原因就是这东西不是所有人能接受。而且还得手工安装一个插件。团队小还好,最多就是多安排几次培训。这样想来成本也不低,如果人员流动大的话,就不是一两次培训能解决的了。而且 idea 这种 ide 按个快捷键就能生成 getter 、setter 了,可以解决不少的手写 getter 、setter 场景。
最好解决方案就是上 kotlin 。 |