Java|Lombok 简单方便,为什么有些公司不让用?


Java|Lombok 简单方便,为什么有些公司不让用?
文章图片
Java|Lombok 简单方便,为什么有些公司不让用?
文章图片
Java|Lombok 简单方便,为什么有些公司不让用?
我必须承认Lombok是一个非常好的Java库 , 它使您可以在编写更少代码的同时保持冷静 。 一些简单的注释可以杀死大量的模板代码 。 但是 , 大多数源代码用于阅读 , 执行时间却很少(您可以仔细阅读此语句) 。
接下来 , 我将使用一些熟悉的场景来重复我们如何陷入龙目岛的把戏陷阱 。
爱的开始 , 恨的起源
面对Lombok提供的许多“上帝职位” , 您不必介意将插件添加到IDE中 。 对于IntelliJ IDEA播放器 , 只需搜索“ Lombok插件”以找到此工件并安装 。 通过安装Lombok插件开始爱上Lombok , 从那以后 , 仇恨开始发芽 。
在使用Lombok之前 , 我们的源代码如下所示:
每个JavaBean都将填充诸如上面的getter , setter , equals , hashCode和toString之类的模板代码 , 它们看起来像个胖子(必须承认Java是一种有缺陷的编程语言) 。安装Lombok插件后 , IDE可以识别其出色的注释 。 使用Lombok的@Getter和@Setter批注后 , 代码将看起来像下面这样苗条:
代码现在看起来更酷吗?但这不是最佳时间 。
由于其他方法已被替换 , 因此我们还要删除toString方法 。 如您所愿 , 您可以使用@ToString注释删除相应的方法:
在龙目岛的把戏之后 , 与最初的代码相比 , 它看起来很酷 , 苗条和性感吗?您认为这是结局吗?
不仅如此 。 您会发现类名称上的大注释看起来很尴尬 。Lombok提供了一个组合的@Data注释 , 它可以替换类名开头的类似于项的东西:
现在 , 龙目岛是否使您的物体在您的脑海中完美呈现?魔鬼的“身体”酷而精致 。Lombok还具有其他一些注释 , 例如@ Slf4j , @ NoArgsConstructor , @ AllArgsConstructor等 。 Lombok用法的介绍不是本文的重点 。
上面代码行数的变化可能是无数程序员爱上Lombok的主要原因 。 就像肥胖的人逐渐成为苗条的人一样 。
还让您看到一种现象:您认为程序员是懒惰的吗?有时它们比您想象的要懒惰 。 虽然很酷 , 但它也植入了代码的祸根 。
美学扭曲 , 爱情隐患
扭曲的美学结果导致被检查对象处于亚健康状态 。 使用Lombok插件后 , 我们的代码也处于“亚健康”状态 。 回到开头的句子:大部分时间里所有的源代码都用于阅读 , 而执行只花很少的时间 。
从本质上讲 , 我们都希望减少程序中的样板代码 , 以使代码更加简洁 , 从而提高代码的可读性和可维护性 。
但是龙目岛没有实现我们追求的目标 。 它只是利用了Java语言的编译时间上的空白 , 并采用了一种巧妙的方式将我们需要的方法注入(编写)到当前类中 。 在这种情况下 , 这种过程很像破解我们的代码 , 只是一个很酷的技巧 。
这种技巧既不明智也不安全 , 但是会破坏Java代码的现有功能以及代码的可读性 。 接下来 , 结合我使用龙目岛后的感受 , 谈谈龙目岛造成的主要痛点 。
1. JDK版本问题
当我想将现有项目的JDK从Java 8升级到Java 11时 , 我发现Lombok无法正常工作 。
因此 , 我不得不从项目源代码中删除所有Lombok批注 , 并使用IDE的内置函数来生成getter / setter , equals , hashCode , toString和构造函数方法 。 您也可以使用Delombok工具完成此过程 。 但这最终会消耗您大量的时间 。