hashmap有了hash为什么还要equals_Java十万个为什么之为啥我不让团队再用Lombok了

我们先来看一下Lombok是何物?

23e679e5e09fc9e93f23d59bd6ae12b2.png

Lombok,本身是一个Java库,它会自动插入编辑器和构建工具中,从而使Java更加生动有趣。通俗一些讲,就是原来需要写的许多的getter、setter、equals、构造方法等,不需要再写了。

4d5270de65a067cd3208d3a0af9e3861.png

正是这些懒到极致的特性,导致大批的Java开发工程师使用该库,并奉若神明,毕竟可以少写代码,早点下班,简直不要太方便。

但是,很不幸的是,我的团队被禁止了,还是我亲自禁止的。

这是为什么呢?

其实,大多数人只看到了其方便之处,而没有看到有多大的危害,而有些还是对开发者本身的损害。

一人Lombok,人人Lombok

Lombok不单是一个Java库,而且还需要插件支持,如果没有,就会报错。

所以,只要团队里的一个人在任一项目中使用了Lombok,那么团队的所有人全部要跟着安装Lombok插件,也跟着使用Lombok,因为不这样做会报错,且严重影响阅读。

这是非常令人恼怒的,你强加给队友一些本来他们不想用的东西,非常影响他人心情,以及团队和谐稳定。

比如 @Data 注解,你必须完全了解其含义,到底会生成哪些方法,怎么生成的,效果怎样等等。如果不完全了解,就有可能会造成意想不到的bug,甚至花费巨大精力去排查。

比如这个例子,原本只有15行代码,加了 @Data 注解之后,编译生成了109行代码,多了许多方法。

源码:

c8a1f4a59feb957a0ef7c9987988fc8a.png

编译后:

e212d661cf5e7936d5def9ca93e63e02.png

这种情况是非常致命的,就好比你不知道这种药吃下去会如何,到底能不能治病,有没有什么副作用等等。

编译报错,无处下手

使用Lombok之后,一旦这些地方发生编译错误,在控制台看不到任何准确的错误信息,永远都只是compile failed。这无疑给排查错误带来了不必要的负担,且无解。必须通过肉眼查看源码,凭借丰富的经验来排查问题,试问,排查了许久解决不了,换你你怎么解决?

看似代码简洁,实则严重影响代码质量及阅读体验

同样是上面的例子,只有15行源码,加了 @Data 注解。

c8a1f4a59feb957a0ef7c9987988fc8a.png

开发者通过源码根本看不出来是何意图,且编译后会有什么样的效果,会添加哪些方法,逻辑是怎么样的,我能不能放心的调用。等等等等,这所有的一切,都是一个未知数。看似代码非常简洁,实则存在非常大的隐患。不止是影响阅读体验,而更严重的,则是代码质量问题。

大家都明白,代码不止是写出来那么简单,还要给别人看,别人还要维护,还要排除问题。所谓三分开发,七分维护,正是如此。而如此做,无疑给维护、后续开发者带来不小的学习成本,提升了解决问题的难度,增加了解决问题所花费的时间。在时间就是生命的今天,怎么能够允许!!!

会产生你意想不到的编译效果

我们针对上述代码,再添加一个 @Getter 注解,且 lazy 属性为 true。本意为生成get方法,且懒加载。

91dccc8bb3a396656c635c21d6b30d67.png

那么我们看一下编译后的代码:

94c2c51e66decab4dec29da244383a34.png

这对开发者来说,其实已经完全偏离了本意,同时,也是最致命的,因为开发者完全不知道将来会发生什么,也无法预测后果。

还有其它可能没有提到的原因,但是无论是什么原因,该类库都不适合用于生产环境,如果只是单纯的学习研究,那么无可厚非。但是,如果要用于生产环境,还是算了。

3f5138af7ceec8ad735865ab42fde52b.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值