上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3.3 自解释编程
除了传统的语言沟通,代码恐怕是技术人员最高频交互的信息载体了。而且,代码的阅读次数远远高于编写的次数,也是一项不容忽视的成本。
自解释编程是基于代码层面的,我们希望达到的效能终态,能够依靠代码自身的命名规范和编程风格达到易于理解的目标,也能够在一定程度上避免“祖传代码”的痛苦。但对于自解释编程我们也应辩证地看待,切忌矫枉过正,抛弃所有注释和文档,会适得其反。
我们来看一个简单的例子:
即便没有任何注释和文档,我们也可以从函数签名获悉,该方法是用来获取折扣值的,似乎非常直观。但其实这段代码的信息熵是非常低的,因为它没有给出任何有关实现背景的提示,如果这是一段“祖传”代码,你将被迫追溯所有与这段代码相关的方法,才能真正理解这段代码背后的设计思想。我们再来看一个例子:
逻辑是不是清晰多了?在绝大多数代码阅读的场景下,我们不仅希望了解这段代码的基本用途,更希望能快速获悉其内部逻辑,包括内部数据处理、程序流程,甚至是一些设计上的考量。当然,深挖代码最终也许能获得同样的信息,但这样会浪费很多时间和精力。
自解释的代码不是无注释和无文档的代码,而是伴随高信息熵的代码体系,内容简洁合理的注释与文档同样也是优秀代码的一部分,能够给效能的提升带来帮助。