冗余变量是纯粹的邪恶

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 54w+ 字,讲解图 2476+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1900+ 小伙伴加入学习 ,欢迎点击围观

冗余变量是专门为 解释 其值而存在的变量。我坚信这样的变量不仅是纯噪声而且是 邪恶的 ,对代码可读性有非常负面的影响。当我们引入一个冗余变量时,我们打算让我们的代码更干净、更容易阅读。但实际上,我们让它变得更加冗长和难以理解。无一例外,任何只使用一次的变量都是多余的,必须用一个值来代替。

这里,变量 fileName 是多余的:


 String fileName = "test.txt";
print("Length is " + new File(fileName).length());


此代码必须看起来不同:


 String fileName = "test.txt";
print("Length is " + new File(fileName).length());


这个例子非常原始,但我相信你已经多次看到这些冗余变量。我们用它们来“解释”代码——它不再只是一个字符串文字 "test.txt" ,而是一个 fileName 。代码看起来更容易理解,对吧?并不真地。

让我们首先深入了解代码的“可读性”。我认为这种质量可以通过理解我正在查看的代码所需的秒数来衡量。时间越长,可读性越低。理想情况下,我想在 几秒钟 内理解任何一段代码。如果我做不到,那是 作者 的失败。

记住 ,如果我不理解你,那是你的错。

代码长度的增加会降低可读性。因此,我在阅读它时需要记住的变量名越多,消化代码并得出有关其目的和效果的结论所需的时间就越长。我认为 四个 变量是我可以在不考虑辞职的情况下轻松保留在脑海中的最大变量数。

新变量使代码更长,因为它们需要声明额外的行。而且它们使代码更加复杂,因为它的读者必须记住更多的名字。

因此,当您想引入一个新变量来解释您的代码在做什么时,请停下来思考一下。首先,您的代码太复杂太长了!使用新对象或方法而不是变量重构它。通过将代码片段移动到新类或私有方法中来缩短代码。

此外,我认为在 完美设计的方法 中,除了方法参数之外,您不需要 任何 变量。