最好能说出作用是什么,如果能够附上一个博客链接就更好了。 我先说一个lombok,可以不写 set/get,而且可以不关闭流了。虽然挺早就出现了,不过我还是最近才得知
1 alamaya 2018-01-25 21:37:48 +08:00 感觉跟你不是生活在同一个时代的 |
![]() | 2 lhx2008 2018-01-25 21:39:18 +08:00 via Android ![]() jdk9 的 jshell |
3 WPalle 2018-01-25 21:39:52 +08:00 这是啥年代的最新 |
5 lihongjie0209 2018-01-25 21:46:11 +08:00 lombok 要装插件的, 你怎么可能让同事都装插件呢 |
![]() | 6 chenguoyu OP @lihongjie0209 从项目经理入手,告诉他们这样可以开发效率更高,可以给公司赚更多的钱。我公司的架构师估计就是这么搞的,所以现在用上了 |
7 huclengyue 2018-01-25 21:56:35 +08:00 via Android ![]() 最新的黑科技就是 kotlin 了。。。。 |
8 LukeChien 2018-01-25 22:13:17 +08:00 via Android ![]() sun 被 oracle 收购了 |
9 lxy 2018-01-25 22:19:16 +08:00 ![]() getter/setter,空构造或非空构造都可以通过 IDE 自动补全,全程可键盘操作,intellij 快捷键 alt+insert。自动关闭流可以用 try-with-resources。 |
10 idamien 2018-01-25 22:23:58 +08:00 请不要提 lombok 这个垃圾了好么 |
![]() | 12 zjp 2018-01-25 22:55:11 +08:00 via Android ![]() 一直好奇 lombok 比 alt+insert 方便吗,前者还要侵入代码 |
![]() | 13 Finest 2018-01-25 22:57:45 +08:00 lombok 是把双刃剑 |
14 zhx1991 2018-01-25 23:19:40 +08:00 jvm 到处都是黑科技啊 |
15 somebody 2018-01-25 23:38:00 +08:00 kotlin |
![]() | 16 cuebyte 2018-01-25 23:43:02 +08:00 jigsaw |
![]() | 17 nl101531 2018-01-25 23:58:03 +08:00 via Android lombok 简直是神器啊 |
![]() | 18 Betsy 2018-01-26 00:35:44 +08:00 via Android 其实我想问下,在使用 lombok 的前提下,怎么给 set/get 加注解? |
20 idamien 2018-01-26 01:01:58 +08:00 @BBCCBB lombok 这个垃圾 装上之后 你之前要是有项目没用它,用 eclipse 打开的时候,选择插入代码会报错。 而且不就是个 get set 嘛 自己自动生成下好了 根据自己需要,用它完全是累赘 卵用没有 |
![]() | 21 xupefei &nbp;2018-01-26 01:14:18 +08:00 我平时写 C# 写 Scala 太爽,写 Java 一定要用 lombok。现在的遗憾是它对 var 的支持不太好。 |
22 ke1e 2018-01-26 01:21:01 +08:00 via Android 感觉还是 idea 滚键盘快,但是 lombok 的优点是之后再添加属性也会有,不用还要再滚次键盘 |
![]() | 23 sagaxu 2018-01-26 01:36:05 +08:00 ![]() lombok 会侵入代码,lambda 也是侵入,stream 也是侵入,foreach 也是侵入,Java 6 可以用到天荒地老 |
24 liuzuo 2018-01-26 03:14:27 +08:00 @lihongjie0209 我是架构我说了算系列 |
25 danielzhang0212 2018-01-26 05:38:33 +08:00 kotlin 多好 |
26 dizhang1109 2018-01-26 05:47:44 +08:00 ![]() 有用 groovy 的朋友吗?虽然开发环境用 groovy 的不多,但写单元测试或者自动化测试,用 groovy 的效率提高几倍。 |
![]() | 27 zzlhr 2018-01-26 08:01:35 +08:00 via iPhone Lombok ?每月总有那么几天! |
![]() | 28 wizardforcel 2018-01-26 08:18:59 +08:00 via Android java9 的 aot 和 kotlin 混合编程 |
![]() | 29 ihuotui 2018-01-26 08:21:36 +08:00 via iPhone g1 垃圾回收器 |
30 Cbdy 2018-01-26 08:46:19 +08:00 via Android Java 10 类型推断 var s = "一个字符串"; |
![]() | 31 liuhuansir 2018-01-26 08:47:44 +08:00 Lombok 这个渣渣卵用没有,推荐这个的同学是不是天天在写 pojo 类?你真当自己是打字员么?用快捷键需要几秒? |
![]() | 32 nl101531 2018-01-26 08:52:44 +08:00 via Android |
![]() | 33 nl101531 2018-01-26 08:53:11 +08:00 via Android @liuhuansir lombok 远比快捷键方便。 |
![]() | 34 Sypher 2018-01-26 08:57:53 +08:00 Lombok 真没必要推广。会被喷的 |
![]() | 35 chenguoyu OP @ihuotui g1 收集器已经完善了吗?记得深入理解 java 虚拟机里面写 java7 才出的商业版,但是具体如何还不知道 |
![]() | 36 stanjia 2018-01-26 09:08:26 +08:00 Lombok 的优点难道不是他的 setter 最后会 return this 么? new Person() .setName('baba') .setAge(18); |
37 lihongjie0209 2018-01-26 09:11:29 +08:00 @liuzuo #24 6666 |
38 lihongjie0209 2018-01-26 09:13:09 +08:00 @stanjia #36 这是链式构造, 有 builder 插件可以直接生成代码, 其次, 这种不符合 pojo 规范, 不太敢用 |
![]() | 39 amon 2018-01-26 09:13:55 +08:00 ![]() lombok 让 java 程序员擅长的代码行数大大降低,kpi 直线下降,请不要推广,谢谢! |
![]() | 41 jlkm2010 2018-01-26 09:28:46 +08:00 vert.x |
![]() | 43 ipeony 2018-01-26 09:39:17 +08:00 @lihongjie0209 #38 它有 @Builder 注解,可以生成标准 builder 模式的 |
![]() | 44 RuzZ 2018-01-26 09:53:03 +08:00 dubbo 合并了 dubbo.x,官方已经放出 release 了 |
45 baoanlol 2018-01-26 09:57:39 +08:00 ![]() 用 lombok 最爽的是可以写 val,这样不用写超级长的类型啊,特别是 Map 里面有个 list 之类的。(没错,我就是 scala 支持者) 进公司一开始是写 scala 的,后来项目停止换到另外一个项目开始写 java,到现在一年多了,还是各种用起来难受,特别是 java 那个 stream。。。。 |
46 Lullaby 2018-01-26 10:06:27 +08:00 有人用[dozer]( https://github.com/DozerMapper/dozer)么 |
47 orangeD 2018-01-26 10:08:57 +08:00 ![]() 打开一个类看到一堆毫无意义的 getter/setter 就想吐,lombok 成功解救了我。 |
![]() | 48 kylefeng 2018-01-26 10:09:29 +08:00 |
49 jjianwen68 2018-01-26 10:19:51 +08:00 目前我用 lombok,只用在 pojo 上,以及注解日志。pojo 看起来整洁了很多。强迫症福音 |
![]() | 50 swim2sun 2018-01-26 10:27:09 +08:00 ![]() 一开始看到那么人多喷 lombok 很诧异,很多人竟然只是因为要给 ide 装个插件就放弃了 lombok 但站在他们的角度想想,也许他们确实不太需要 lombok,如果你仍然用着 N 层架构,项目里就是一堆 service, dao, pojo 的话,那 getter/setter 方法全部集中在了 pojo 里,这种情况下 lombok 的意义确实不大,因为你根本不会在意 pojo 里有哪些函数。 但是,如果你恰好了解领域驱动设计( DDD ),你不满足于贫血模型,开始实践充血模型,那么你的实体类里不但会有 getter/setter,还会有很多业务方法。这个时候你就会觉得那些 getter/setter 很多余、能自动生成的代码最好应该是在编译的时候生成,这是你发现 lombok 是个大救星。当然 lombok 的功能不只是生成 getter/setter,安装插件这个小小的麻烦与它带来的收益相比根本不算什么。 |
![]() | 51 xarrow 2018-01-26 10:48:00 +08:00 kotlin 支持协程 |
![]() | 52 pizida 2018-01-26 11:12:42 +08:00 @huclengyue 高级黑呀! |
53 Len1133 2018-01-26 11:18:21 +08:00 lombok 对代码的简洁还是很有帮助的,getter/setter 的代码本来就不该出现在项目里 |
![]() | 55 Amayadream 2018-01-26 11:27:55 +08:00 拿 lombok 和 ide 快捷键相比实在是不敢苟同, 个人认为 lombok 最大的作用是删除了大量的冗余代码(getter/setter/slf4j 等), 使得原来非常臃肿的类看起来简洁明了, 简直是强迫症的福音. |
![]() | 56 mosliu 2018-01-26 11:32:40 +08:00 lombok 是好东西 不过这啥年代的? |
![]() | 57 genesys 2018-01-26 11:35:33 +08:00 @swim2sun 即使实践充血模型,这些 getter / setter 是不是看起来不爽还是因人而异的。在简洁性和代码侵入性之间不同人有不同的选择。当然个人感觉 lombok 为 Java 语言特性的演进提供了很好的启示。 |
![]() | 58 ZhLTE 2018-01-26 11:39:52 +08:00 c#6.0 还是 7.0 支持了这一特性 |
![]() | 59 xuhaoyangx 2018-01-26 11:40:31 +08:00 java 对不定格式的 json 处理真麻烦 |
60 lihongjie0209 2018-01-26 11:51:10 +08:00 @swim2sun #50 不是某个人的问题, 是你用了 lombok 之后所有同事必须装插件, 你怎么说服他们? 技术推广从来不是技术的问题, 是人的问题. |
![]() | 61 vjnjc 2018-01-26 11:56:41 +08:00 如果想自动完成 get/set 用 idea 的生成器。 如果想不写 get/set,用 groovy 混编。 |
![]() | 62 swim2sun 2018-01-26 12:01:42 +08:00 @lihongjie0209 我们团队使用微服务架构,一个服务主要由一个人主导开发,最多不会超过三个人参与,所以推广的成本小,并不是“所有同事”都必须装插件。而且我的同事在使用 lombok 后都表示好用。所以你说的问题还是看环境吧,如果你的环境确实不适合使用 lombok 那就不用,但因此而批评 lombok 的话就不合理了。 |
![]() | 63 rb6221 2018-01-26 12:15:02 +08:00 看了这么多层,好多吐槽 lombok 的,但是一直没看到让人信服的论据,你们倒是举个栗子啊……我真的,一个都没看出来。 至于那些违反规范……让人变懒……你觉得这真的像个正经栗子吗 |
65 ming7435 2018-01-26 13:05:13 +08:00 我一直弄不明白为啥要用 lombok,一键生成 setter/getter 有什么不好?非得强制别人也装插件 |
![]() | 66 wallriding 2018-01-26 13:12:28 +08:00 有些程序员吧,你让他装个插件,他觉得天都要塌了:“居然*强制*我装插件?!” 装个插件难道不是两分钟的事情么 |
67 choice4 2018-01-26 13:28:50 +08:00 @lhx2008 老哥了解 jdk9 的 javax.annoatation 模块不可见怎么解决吗?@Resource 注解已拉闸 除了降 8 还有没有别的办法 |
68 sggzh 2018-01-26 13:53:17 +08:00 vavr |
![]() | 69 zpf124 2018-01-26 14:07:12 +08:00 为什么 装插件不是一个问题, 如果 lombok 仅仅是个 maven 插件或者 git submodel,那毫无疑问我支持他。 这就和 你写了一个 word,然后告诉别人 想看这个 word,请先去下个 360 解压工具,然后才可以看。 |
![]() | 70 sagaxu 2018-01-26 14:23:26 +08:00 @lihongjie0209 需要推广吗? maven/gradle 编译又不会报错。IDE 里出错他们自己会解决。 @zpf124 什么?还要 word ?很多时候纯文本就能搞定的事情,你还要让我装个 word 才能看? @wallriding 如果同事里很多这种装个插件都抱怨的,首先要考虑的不是怎么推广,是怎么跳槽。 |
72 lihongjie0209 2018-01-26 14:46:34 +08:00 |
73 tairan2006 2018-01-26 14:48:40 +08:00 |
74 lihongjie0209 2018-01-26 14:51:29 +08:00 @sagaxu #70 因为一个插件, 你要浪费其他同事多少时间? 出了 BUG 的负责改吗? 文档看不懂你负责教吗? 我当然同意 lombok 是个好东西, 不然我也不会在这里和你讨论. 自己的项目怎么搞无所谓, 但在工作上别给别人添麻烦. 不是所有的开发都喜欢新技术, 特别是这种已经有解决方案的新技术 |
![]() | 75 deadEgg 2018-01-26 14:58:04 +08:00 没看到什么我认为的“黑科技”。 倒是因为工具吵起来了。 |
![]() | 76 Mogugugugu 2018-01-26 15:38:10 +08:00 就问一句:leader 说用 lombok,有几个人会因为不想装插件或者不想看文档 而 选择离职 的? |
77 lihongjie0209 2018-01-26 15:40:59 +08:00 @Mogugugugu #76 我说的是同事, 不是上下级关系. 当领导怎么干都随意, 工资给到就好了. |
![]() | 78 zpf124 2018-01-26 15:46:00 +08:00 @sagaxu 拿纯文本举例那也行啊, 我传给你的 md 文件, 结果内容都是 非标准 markdown 语法,某第三方厂商的方言扩展, 然后我告诉你必须去下个 支持我用的这个方言的渲染器。 |
![]() | 79 sagaxu 2018-01-26 15:58:06 +08:00 @lihongjie0209 我推过很多东西,阻力并没有你想象的那么大。 我推过 springboot,反馈都是正面的。推过 vue,稍微指导了一下,很快大家都上手了。lombok 是跟 springboot 一起推的,没人提出过异议。推 coffeescript 遭到了抵抗,我也没坚持,强推的瓜不甜。是给人添麻烦,还是大家一起提高效率,因团队而异,只有做了才知道。 |
80 lihongjie0209 2018-01-26 16:03:34 +08:00 @sagaxu #79 你说的对. |
81 jy02405651 2018-01-26 16:54:37 +08:00 看了全部回复~没看一个正经的黑科技! |
![]() | 82 zjp 2018-01-26 17:01:11 +08:00 via Android #12 没想到都在争论 lombok 感谢#49 解决了我的疑惑… |
83 hantsy 2018-01-26 17:22:27 +08:00 @jy02405651 这个也太复古了。。。之前项目用过 modelmapper,mapstruct,不过现在力求在 Pojo 设计上尽量用一些 DDD 概念,这些 Mapper 显得有点累赘了。 |
84 hantsy 2018-01-26 17:23:31 +08:00 @wizardforcel 这个有例子吗? |
85 hantsy 2018-01-26 17:31:46 +08:00 ![]() Lombok 这个项目用了好多年,现在 Spring 官方的 Spring Cloud 官方项目中都已经用了。 编译时(运行时不需要),其利用 Java Compiler APT 特性在 java classes 中加入一些常见辅助方法等。除了 Getter,Setter 外,Builder,ToString,hashCodeAndEquals, Data,Slf4j, 三个 XXXContrcutor 都很常用。 类似的工具很多,AutoValue,Immutables 等。 https://dzone.com/articles/lombok-autovalue-and-immutables |
86 hantsy 2018-01-26 17:35:35 +08:00 @sagaxu CoffeeScript 我也觉得难受,难道是为写 Python 的人准备的吗?之前一个 AngularJS 1.5 项目从 CoffeeScript 切换到 ES 6,舒服多了。 |
87 hantsy 2018-01-26 17:37:11 +08:00 @xupefei Java 10 应该会引入 Local Variable 的 var 声明支持,感觉这些是动态语言才有的特性。暂时只能用 Kotlin 之类的玩玩。 |
88 hantsy 2018-01-26 17:45:12 +08:00 ![]() @lihongjie0209 文档都看不懂??? 安装个 Lombok 插件有那么难?对于 IDEA,Eclipse 有相应的插件,NetBeans 根本不需要插件自动启用了 APT。 这是新技术? Lombok 仅仅只是利用 Java Compiler 的 APT 特性而已,这个特性是 2004 年 Java 5 年加入的,至今 14 年了。稍微花几分钟了解一下 APT 就可以理解 Lombok 是做什么的。 |
89 lihongjie0209 2018-01-26 17:49:27 +08:00 @hantsy #88 正常做项目都要加班, 你还要同事去学新东西, 我是不敢这么干的, 至于说用了 lombok 能带来多大的效率, 这个见仁见智 |
90 hantsy 2018-01-26 17:51:30 +08:00 @dizhang1109 Geb,Spock ?很少用。Geb 用过一次。Spock 的一些概念好像 JUnit 5 也有了。 |
91 hantsy 2018-01-26 17:59:59 +08:00 @lihongjie0209 那是你们项目没有人推动技术和工具,对于项目管理基本上靠吼的团队来说很正常,只要有一点技术的东西都认为是项目进度的障碍。这样的团队我可以理解,因为团队里没人知道工具来带来的效率。 |
![]() | 93 wizardforcel 2018-01-26 18:22:33 +08:00 @lihongjie0209 请你把你们的 pom.xml 发出来让大家看看用了多少库。我敢保证 lombok 的 api 比里面大多数都少。 |
94 lihongjie0209 2018-01-26 18:41:22 +08:00 统一回复一下: 1. 我用过 lombck, 但是没有在同事之间推广, 因为它入侵代码还要装插件. 2. lombck 解决的问题并不是没有解决方案的, ide 自动生成也没有多难, 所以并没有使用 lombok 的需求. 3. 学习 lombck 是有个过程的, 包括试错以及个人的学习能力, 在已有的自动生成代码非常稳定以及熟悉的情况下, 没有必要引入新的东西.4. 这种东西感觉没什么讨论的意义, 与公司的环境有很大关系, 后面的内容不再回复了. |
95 lihongjie0209 2018-01-26 18:44:11 +08:00 附上 stackoverflow 的链接: https://stackoverflow.com/questions/3852091/is-it-safe-to-use-project-lombok |
![]() | 96 aristotll 2018-01-26 19:17:36 +08:00 @lihongjie0209 #94 你的几点都站不住脚的 入侵代码 getter setter 才是 装插件之类也是醉了 你的同事连 lombok 的学习能力都没吗 如果是遗留代码的确没必要加 但是新代码加绝对没问题的 |
![]() | 97 laodao1990 2018-01-26 19:26:51 +08:00 我嚓嘞!楼主明明好意讨论下 java 新技术,咋变成 lombok 攻防战了。。。 |
![]() | 98 wallriding 2018-01-26 19:53:18 +08:00 觉得看个 lombok 的文档也能算学习成本的人也基本上属于弱智了 |
![]() | 99 chocotan 2018-01-26 21:17:50 +08:00 lombok 好东西+1,自己的小项目在用,领导也觉得不错,缺点楼上们也说了要装插件 |
![]() | 100 winglight2016 2018-01-26 21:33:32 +08:00 用 playframework 的一笑而过~~~ |