返回介绍

减少变量

发布于 2024-08-18 11:54:29 字数 2369 浏览 0 评论 0 收藏 0

在第8章中,我们讲了如何引入“解释”或者“总结”变量来使代码更可读。这些变量很有帮助是因为它们把巨大的表达式拆分开,并且可以作为某种形式的文档。

在本节中,我们感兴趣的是减少不能改进可读性的变量。当移除这种变量后,新代码会更精练而且同样容易理解。

在下一节中的几个例子讲述这些不必要的变量是如何出现的。

没有价值的临时变量

在下面的一小段Python代码中,考虑now这个变量:

now是一个值得保留的变量吗?不是,下面是原因:

·它没有拆分任何复杂的表达式。

·它没有做更多的澄清——表达式datetime.datetime.now()已经很清楚了。

·它只用过一次,因此它并没有压缩任何冗余代码。

没有了now,代码一样容易理解。

像now这样的变量通常是在代码编辑过后的“剩余物”。now这个变量可能从前在多个地方用到。或者可能那个程序员料想now会多次用到,但实际上再没用到过它。

减少中间结果

下面的例子是一个JavaScript函数,用来从数组中删除一个值:

变量index_to_remove只是用来保存临时结果。有时这种变量可以通过得到后立即处理它而消除。

通过让代码提前返回,我们不再需要index_to_remove,并且大幅简化了代码。

通常来讲,“速战速决”是一个好的策略。

减少控制流变量

有些时候你会在代码的循环中见到如下模式:

甚至可以在循环里多处把变量done设置为true。

这样的代码通常是为了满足某些心照不宣的规则,即你不该从循环中间跳出去。根本就没有这样的规则!

像done这样的变量,称为“控制流变量”。它们唯一的目的就是控制程序的执行——它们没有包含任何程序的数据。在我们的经验中,控制流变量通常可以通过更好地运用结构化编程而消除。

这个例子改起来很简单,但是如果有多个嵌套循环,一个简单的break根本不够怎办呢?在这种更复杂的情况下,解决方案通常包括把代码挪到一个新函数中(要么是循环中的代码,要么是整个循环)。

你希望你的同事随时都觉得是在面试吗?

来自微软的Eric Brechner曾说过一个好的面试问题起码要涉及三个变量。[1]可能是因为同时处理三个变量会强迫你努力思考!这对于面试来讲还说得过去,因为你要尝试找到候选人的极限。但是你希望你的同事在读你的代码时感觉就像你在面试他们吗?

[1]《代码之道》英文书名《Hard Code》,由机械工业出版社引进并出版,作者Eric Brechner。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文