当前位置:首页 > 科技  > 软件

揭示Lombok的代码设计缺陷:探索封装问题

来源: 责编: 时间:2023-10-23 17:05:40 352观看
导读译者 | 李睿审校 | 重楼 在不断发展的Java开发世界中,开发人员不断寻找工具和代码库来简化代码编写过程。其中一个工具是Project Lombok,通常简称为Lombok。这个Java库提供了代码生成功能,有望简化开发人员的工作。然而,

译者 | 李睿s3E28资讯网——每日最新资讯28at.com

审校 | 重楼 s3E28资讯网——每日最新资讯28at.com

在不断发展的Java开发世界中,开发人员不断寻找工具和代码库来简化代码编写过程。其中一个工具是Project Lombok,通常简称为Lombok。这个Java库提供了代码生成功能,有望简化开发人员的工作。然而,与任何强大的工具一样,也需要注意避开一些设计缺陷。s3E28资讯网——每日最新资讯28at.com

s3E28资讯网——每日最新资讯28at.com

本文将以Lombok为重点深入研究代码设计的世界,探讨Lombok看似方便的注释(例如Builder和Log)可能并不像看起来那么完美的原因。此外还将强调封装的重要性,并讨论Lombok的Data和NotNull注释如何导致意想不到的挑战。无论是经验丰富的开发人员还是开始走上编码之旅的新手,本文都将提供具有价值的见解,以增强他们的工程技能。s3E28资讯网——每日最新资讯28at.com

Lombok的优点

在深入研究潜在的缺陷之前,有必要认识到Lombok的优点。Lombok提供了几个可以显著简化代码编写的注释:s3E28资讯网——每日最新资讯28at.com

  • Log注释:Lombok的Log注释允许开发人员快速生成日志代码,减少对样板代码的需求。
  • Builder注释Builder注释通过开发增强代码可读性的构建器方法,简化了复杂对象的创建。

封装的挑战

Lombok的应用并不是一帆风顺的。Lombok带来的最重要的挑战之一与封装概念有关。封装是面向对象编程的基本原则,强调将数据(属性)和对数据进行操作的方法(函数)捆绑到一个称为类的单元中。它有助于维护数据完整性,并保护数据免受未经授权的访问。s3E28资讯网——每日最新资讯28at.com

  • 数据注释:Lombok的数据注释虽然看起来很方便,但可能导致“贫血模型”贫血模型是一个术语,用于描述主要存储几乎没有行为的数据的对象。该注释为类中的所有字段生成getter和setter方法,通过将内部状态暴露给外部操作,有效地破坏了封装。

考虑这样一个场景,其中有一个带有敏感信息(如密码字段)的User类。应用Data注释将自动为密码字段生成getter和setter方法,从而可能允许对敏感数据进行未经授权的访问。这可能导致安全漏洞和数据完整性问题。s3E28资讯网——每日最新资讯28at.com

  • NotNull注释:另一个挑战来自Lombok的NotNull注释。这里给出的建议是一些来自Java 8的带有Objects.requireNonNull的显式API。

为了解决Null值的问题,Java8和更高版本提供了一个内置的解决方案。Objects.requireOnNull方法允许开发人员显式检查Null值,并在遇到Null值时抛出NullPointerException。这种方法提供了一种清晰简洁的方法来处理Null检查,确保基本字段不会未初始化。s3E28资讯网——每日最新资讯28at.com

以下是如何使用Objects.requireOnNull的示例:s3E28资讯网——每日最新资讯28at.com

Java  public void setUser(User user) { this.user = Objects.requireNonNull(user, "User must not be null"); }

通过使用Objects.requireOnNull,开发人员可以更稳健地执行Null检查,即使不依赖Lombok的NotNull注释。s3E28资讯网——每日最新资讯28at.com

增强代码模板和IDE支持

同样需要注意的是,即使不使用Lombok,开发团队也可以在集成开发环境(IDE)中增强代码模板。例如,流行的Java IDE IntelliJ IDEA为生成构建器模式提供了原生支持。开发人员可以创建自定义代码模板,或者使用IDE特定的功能来生成符合他们首选编码标准的代码。s3E28资讯网——每日最新资讯28at.com

通过利用IDE特性和定制模板,开发团队可以获得Lombok的许多好处,例如减少样板代码和改进代码可读性,同时保持对生成代码的完全控制。s3E28资讯网——每日最新资讯28at.com

执行最佳实践的挑战

在理想情况下,开发人员可以使用像Arch Unit这样的工具来强制执行编码最佳实践,并防止使用不安全的注释。然而,事实表明,这说起来容易做起来难。通过自动化工具避免特定的Lombok注释可能面临挑战或限制。这给代码审查和开发人员带来了更大的责任,以捕捉和纠正潜在的问题。s3E28资讯网——每日最新资讯28at.com

使用Lombok的权衡

像任何工具一样,Lombok从代码设计的角度进行了权衡。它提供了便利,并减少了样板代码,但是也会给数据封装带来风险,并且在代码审查期间需要额外的警惕。在项目中使用Lombok的决定应该经过深思熟虑,需要考虑应用程序的特定需求以及开发团队对Lombok的特性和潜在缺陷的熟悉程度。s3E28资讯网——每日最新资讯28at.com

结语

总之,Lombok是一个强大的工具,可以显著提高Java开发中的代码可读性,并减少样板代码。但是必须谨慎使用它,特别是在数据封装方面。了解潜在的缺陷(例如Data和NotNull注释)对于维护代码完整性和安全性至关重要。s3E28资讯网——每日最新资讯28at.com

与开发人员工具箱中的任何工具一样,应该谨慎地使用Lombok,仔细考虑它的优点和缺点。充分了解Lombok的方法可以帮助用户利用它的优势,同时降低风险,最终生成更可维护和更安全的Java代码。s3E28资讯网——每日最新资讯28at.com

因此,在Java项目中使用Lombok之前,需要记住揭示其代码设计缺陷并做出明智的决策,以提高工程技能并确保代码库的完整性。s3E28资讯网——每日最新资讯28at.com

原文标题:Unraveling Lombok's Code Design Pitfalls: Exploring Encapsulation Issues,作者:Otavio Santanas3E28资讯网——每日最新资讯28at.com


s3E28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-14585-0.html揭示Lombok的代码设计缺陷:探索封装问题

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 你的 JavaScript 正在泄漏内存而你却不知道

下一篇: private final、@Autowired、@Resource你更喜欢哪个?

标签:
  • 热门焦点
  • Redmi Buds 4开箱简评:才199还有降噪 可以无脑入

    在上个月举办的Redmi Note11T Pro系列新机发布会上,除了两款手机新品之外,Redmi还带来了两款TWS真无线蓝牙耳机产品,Redmi Buds 4和Redmi Buds 4 Pro,此前我们在Redmi Note11T
  • 分布式系统中的CAP理论,面试必问,你理解了嘛?

    对于刚刚接触分布式系统的小伙伴们来说,一提起分布式系统,就感觉高大上,深不可测。而且看了很多书和视频还是一脸懵逼。这篇文章主要使用大白话的方式,带你理解一下分布式系统
  • 让我们一起聊聊文件的操作

    文件【1】文件是什么?文件是保存数据的地方,是数据源的一种,比如大家经常使用的word文档、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存数据,它既可以保
  • 腾讯盖楼,字节拆墙

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之“想重温暴刷深渊、30+技能搭配暴搓到爽的游戏体验吗?一起上晶核,即刻暴打!”曾凭借直播腾讯旗下代理格斗游戏《DNF》一
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的“7天甘肃行”直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,“7
  • OPPO K11采用全方位护眼屏:三大护眼能力减轻视觉疲劳

    日前OPPO官方宣布,全新的OPPO K11将于7月25日正式发布,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼IMX890主摄,堪称是2000档位影像表
  • 与兆芯合作 联想推出全新旗舰版笔记本电脑开天N7系列

    联想与兆芯合作推出全新联想旗舰版笔记本电脑开天 N7系列。这个系列采用兆芯KX-6640MA处理器平台,KX-6640MA 处理器是采用了陆家嘴架构,16nm 工艺,4 核 4 线
  • 电博会与软博会实现"线下+云端"的双线融合

    在本次“电博会”与“软博会”双展会利好条件的加持下,既可以发挥展会拉动人流、信息流、资金流实现快速交互流动的作用,继而推动区域经济良性发展;又可以聚
Top