点击关注公众号,Java干货及时送达

来源:toutiao.com/i6884399145390440964


经常在其它各个地方在说公司禁止使用Lombok,我一直不明白为什么不让用,今天看到一篇文章列举了一下“缺点”,这里我只想狠狠地反驳,看到列举的理由我竟无言以对。

原文如下:下面,结合我自己使用 Lombok 之后的感受,谈谈 Lombok 带来的几大痛点。

JDK 版本问题

当我想要将现有项目的 JDK 从 Java 8 升级到 Java 11 时,我发现 Lombok 不能正常工作了。于是我不得不将所有的 Lombok 注解从项目源代码中清除,并使用 IDE 自带的功能生成 getter/setter,equals,hashCode,toString 以及构造器等方法,你也可以使用 Delombok 工具完成这一过程。但这终究会消耗你很多的时间。

我的反驳:很多公司一旦确定JDK版本在很长的时间都不会改变(比如银行项目很多都在用jdk1.6,你问他愿意升级到jdk11不?),现在都出到14版本了,你看有多少公司会升级!如现在很多公司都在用JDK1.8,任你出到JDK14,我依然继续使用JDK1.8,等你出到JDK20时我相信Lombok肯定会支持更高的版本,那时兼容问题将不存在。

胁迫使用

当你的源代码中使用了 Lombok,恰好你的代码又被其他的人所使用,那么依赖你代码的人,也必须安装 Lombok 插件 (不管他们喜不喜欢),同时还要花费时间去了解 Lombok 注解的使用情况,如果不那么做,代码将无法正常运行。使用过 Lombok 之后,我发现这是一种很流氓的行为。

我的反驳:你装不装Lombok 插件不是你喜不喜欢,不是由你个人意愿决定的,这是工作,公司要求怎么做就要怎么做,这是规定。Lombok是一个非常简单的知识点,十分钟就能上手使用,你却抱怨要花费时间学习,作为程序员不是无时无刻都在学习吗,你有这种抱怨只能你放弃程序员这个工作吧!

可读性差

Lombok 隐藏了 JavaBean 封装的细节,如果你使用 @AllArgsConstructor 注解,它将提供一个巨型构造器,让外界有机会在初始化对象时修改类中所有的属性。

首先,这是极其不安全的,因为类中某系属性我们是不希望被修改的;

另外,如果某个类中有几十个属性存在,就会有一个包含几十个参数的构造器被 Lombok 注入到类中,这是不理智的行为;

其次,构造器参数的顺序完全由 Lombok 所以制,我们并不能操控,只有当你需要调试时才发现有一个奇怪的 “小强” 在等着你;

最后,在运行代码之前,所有 JavaBean 中的方法你只能想象他们长什么样子,你并不能看见。

我的反驳:不满意@AllArgsConstructor的做法你可以使用@Builder啊,这个支持你任意顺序任意数量的创建对象,你不了解Lombok的其它用法就说它不好。你要看JavaBean中的方法?它有啥好看的,Getter和Setter方法有啥好看的,你不知道Getter和Setter方法长什么样吗?实在不明白有什么好看的?

代码耦合度增加

当你使用 Lombok 来编写某一个模块的代码后,其余依赖此模块的其他代码都需要引入 Lombok 依赖,同时还需要在 IDE 中安装 Lombok 的插件。

虽然 Lombok 的依赖包并不大,但就因为其中一个地方使用了 Lombok,其余所有的依赖方都要强制加入 Lombok 的 Jar 包,这是一种入侵式的耦合,如果再遇上 JDK 版本问题,这将是一场灾难。

我的反驳:我们在使用其它框架时,那框架引入了不计其数的包,现在要引入一个很小的包都在斤斤计较,Lombok这么好用,几乎所有项目都会使用到,这还需要强制引入吗,我们自觉的都会在maven的parent依赖中统一引入了。

得不偿失

使用 Lombok,一时觉得很爽,但它却污染了你的代码,破坏了 Java 代码的完整性,可读性和安全性,同时还增加的团队的技术债务,这是一种弊大于利,得不偿失的操作。如果你确实想让自己的代码更加精炼,同时又兼顾可读性和编码效率,不妨使用主流的 Scala 或 Kotlin 这一基于 JVM 的语言。

我的反驳:破坏了完整性?加上臃肿的Getter&Setter你却嫌弃臃肿,不加你又说破坏代码的完整性,你想怎么做。增加团队的技术债务?学个Lombok十分钟的事情,有什么好增加的。要使用Kotlin? 一般公司都没有这么激进吧,现在Kotlin很多配套东西在企业中使用还不成熟吧。

热门内容:
美团面试题:String s = new String("111")会创建几个对象?再见,HttpClient!再见,Okhttp!最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

明天见(。・ω・。)ノ♡

我要狠狠的反驳“公司禁止使用Lombok”的观点相关推荐

  1. “团队禁止使用Lombok”,被我狠狠的反驳了!

    今日推荐6年,终拿腾讯 offer! 都2021年了,你还在用Jenkins?赶快看看这些替代方案吧! 盘点 12 个 GitHub 上的高仿项目 CTO 说了,用错 @Autowired 和 @Re ...

  2. 一公司禁止婚外情和出轨,称如果员工出现此类情况,将予以辞退处理

    大家好!我是老洪. 刚看到一则有意思的资讯. 一家公司发布了禁止婚外情和出轨的通知,称如果员工出现此类情况,将予以辞退处理. 这份通知称,公司已婚员工如有婚外情.出轨.包养小三等不良情况,将辞退处理. ...

  3. 解决公司禁止拷贝文件的小技巧

    公司里设置了权限只能拷入,无法将文件拷出,虽然有放开权限的公共U盘可以用,但是还是不自由,于是找了一种几乎是傻瓜式的方法搞定限制,奔向自由. 前提准备: 1.U盘 2."重装博士" ...

  4. 40亿美元!张一鸣拿下字节版王者荣耀,过渡期给员工发奖金

    点击上方"码农突围",马上关注 这里是码农充电第一站,回复"666",获取一份专属大礼包 真爱,请设置"星标"或点个"在看&quo ...

  5. 英特尔、高通等多家科技巨头禁止员工与华为交流!

    整理 | 伍杏玲 出品 | 程序人生(ID:coder_life) 刚在 6 月 2 日,IEEE 才发表声明恢复华为的评审权限:经美国商务部就出口管制条例在 IEEE 出版活动中的适用性做出的说明, ...

  6. 员工口中的50家最好的科技公司

    近年来,科技行业一直起起伏伏.人们担心这个行业为男性所主导,而消费者又担心隐私问题.尽管如此,仍然有很多技术公司受到员工的青睐,这些公司重视员工的健康和财务状况,同时也尊重员工,无论他们是什么背景.财 ...

  7. 域组策略禁止执行指定软件

    AD域运行在Windows Server服务器,用于集中管理网内的所有Windows客户端主机,其中最重要的管理手段便是「域组策略」,可管理的条目非常多,包括系统设置.注册表.软件安装等. 1.配置域 ...

  8. 从货拉拉危机,看那些带“病”闯关IPO的公司都怎样了?

    来源|锌刻度 编辑|陈邓新.李觐麟 资本市场对货拉拉的态度,正在悄然改变. 之前颇受红杉.高瓴等风投的追捧,如今其投资的货拉拉碰到危机纷纷三缄其口,并未有公开的加油打气之举,而货拉拉的IPO之路也有变 ...

  9. 重读图灵经典之作,九条反驳意见引人深思

    2020-02-27 16:57 导语:机器能思考! 当一台计算机能够骗过人类,让他们相信它就是一个人的时候,就能够被称作智能. 作者 | Andre Ye 编译 | 丛末.蒋宝尚 编者按:对于艾伦· ...

最新文章

  1. oracle删除表不等待,oracle故障处理之删除大表空间hang住
  2. Deep Reinforcement Learning 深度增强学习资源
  3. 线性代数知识点总结_2020考研数学线性代数强化复习重点知识点总结
  4. C语言指针(1)嵌入式linux
  5. 浏览器 CSS Hack 收集
  6. 接口测试工具--apipost脚本讲解
  7. Python基础——while循环语句
  8. 使用微PE制作启动U盘重装系统教程
  9. Windows10如何彻底卸载MySQL
  10. NBU备份速度快慢调整
  11. labview 编程样式_LabVIEW编程样式规则
  12. 相遇在世界尽头与冷酷仙境
  13. 天龙mysql_天龙八部游戏数据库mysql安装.doc
  14. bzoj1050 [HAOI2006]旅行comf
  15. 使用Unity的AR Foundation导出到安卓时出现黑屏问题的可能原因
  16. 新东方雅思词汇(List 46 ~ List 48)
  17. 与传统媒体相比新媒体传播所具备的特点与优势!
  18. 前端开发者如何用JS开发后台
  19. 数据库课程设计【5】-----答辩总结
  20. css淡入淡出_CSS淡入淡出

热门文章

  1. 介绍ABC 蜂群算法网站
  2. 线程范围内的数据共享
  3. 一个球从100米高度自由落下,每次落地后反弹回原高度的一半; * 再落下,求在第几次之后反弹高度小于0.1米, * 并计算在这一次落地时共经过多少米?...
  4. 没听说过这些,就不要说你懂并发了,three。
  5. Struts2--ActionContext及CleanUP Filter
  6. 【青少年编程】【一级】森林的一天
  7. 技术图文:如何利用 C# 实现 误差反向传播 学习规则?
  8. 【数据结构】最小生成树 Prim算法 Kruskal算法
  9. ​GPT-3好“搭档”:这种方法缓解模型退化,让输出更自然
  10. TIOBE 新榜单:Python 超越 Java 重回第二,Rust 崛起