冗余变量是纯粹的邪恶

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

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

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

这里,变量 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 。代码看起来更容易理解,对吧?并不真地。

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

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

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

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

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

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