代码写给人看 — 读的账比写的账大
这一章讲四件事: 为什么读代码的时间远多于写、这个事实逼出什么优先级; 怎么让一个函数像书的目录一样读;名字为什么是「面向阅读者的 界面」、怎么当场验名字; 以及语境怎么让代码变成一本能翻的书。 主走查是一个混层的函数:同一坨代码,拆层前后各读一遍。
1. 先算账:读比写贵,而且贵得多
第 01 章说过「读远比写费时间」1。这一章先把这笔账算细,因为所有可读性原则都压在这笔账上。
作者在「交流」一节给了一个时间结构:软件从开发到寿终正寝, 期间有很多人一遍又一遍地读其中的代码;而且不用等到维护—— 开发阶段程序员就要一边回顾前面写的代码、一边写新代码, 「通过代码,程序员与片刻之前的自己实现了交流」2。
一段代码的一生大致是这样(时间比例是编的,用于演示量级):
写 ▌ 1 份时间
读 ██████████████████ 15~20 份时间
(自己回看 + 同事评审 + 接手人排障 + 加功能前的理解 + ……)
图说:比例是演示值;书里的论断是定性的「读远多于写」,
定量数字见本库另一本已拆的书《软件开发的 201 个原则》。
既然读占大头,优先级就排出来了,而且是一条链:
读的效率 > 写的效率(多花时间写得清楚,值) 读的效率 > 执行的效率(为了让机器跑快把代码写得难懂,亏)3
第二条尤其反直觉,但它有推理:代码可读性高,后面想提高执行效率时也更容易下手4; 反过来,先牺牲可读性换速度,等于把未来每次优化都变得更难。 书里的原话是:不能让人读懂的代码不是好代码5。