编码技巧(九):少写一些

维护过别人代码的开发者们,大概都能理解这样一种心情吧,

就如同盲人摸象,又好似如鲠在喉,

想要快速挪动脚步,奈何有力使不出来。


这是因为代码中留存下来的信息太少了,即使我们在编写时意识到了这一点,

总有一些背景信息是无法保存下来的,导致之后阅读起来不知所云。

看不懂就不敢轻易动它,不然很容易引发故障


在第三篇中我们曾介绍过 “写明用意” 这种编码技巧,

目的就是给今后的维护者们,提供更多的线索。


但是面对一些 “祖传” 代码,如果已经是信息残缺了,

我们该怎么做呢?


本文我们就讨论这种情况下,该如何编码。

摆正心态

开发者不愿意维护别人写的代码,可能是一种 “强迫思维”,

未必是因为他人写的代码不好阅读。


这时候首先要做的事情就是,调整心态,

对自己说:“这就是一段代码,是可以阅读的,我能读懂它。”


千万不要试图重写它,改成用自己的代码重新描述。

因为重写后的代码,又会带来一部分信息损失

不但很难复原老代码的所有业务逻辑,对新的维护者来说也是一场灾难。


此外,如果开发者曾阅读过一些知名开源项目源码的话,

他的 “代码洁癖” 可能会好转很多,

因为知名项目的源代码,未必就比自己同事写的代码更好。


由于跟同事是在一个团队中,对项目背景有着相似的认知,

同事的代码,反而更好阅读。

源码分析

对代码的每一次阅读,都是要花费人力的,

所以不妨把自己每次费力读懂后的心得,注释到代码中,

这会给后来人省下非常多的时间。


有些代码是无法被注释的,或者是没有修改权限,

或者编译过程不可重现,

那么就不妨将源码分析写入文档中,就像我们阅读开源代码一样。


对开源代码我们可以做源码分析,对同事的代码为什么不行呢?


能看懂别人的代码,就不用重写了,

这样才能站在巨人的肩膀上,继续往前看。

不然已经可用的功能,为什么要重新开发一遍,这是极大的资源浪费。

代码量

这样就引出了本文介绍的一个编码技巧 “少写代码”,

能做到在不必要的情况下,克服自己的强迫症,不写或少写代码,

反而能事半功倍,捷足先登。


写出来代码,有两种显而易见的危害,

(1)代码越多,缺陷就越多

(2)代码越多,硬编码就越多


先看第一个,程序是一种不稳定的结构,稍不注意就会出问题,

代码写的越多,就越难顾得周全

所以人们才会想到系统拆分和信息隐藏,让每一段程序的职责尽可能的少一些。


但这也仅是权宜之计,当代码量巨大的时候,

所以,我们不但要反思系统拆分的合理性,还要反思 “为什么我们有这么多的代码”。


再看第二条,所谓 “硬编码” 指的是 “写死” 的逻辑,

为了把功能写出来,一些尚未确定的信息只能先硬编码了,

这样会埋下隐患,尾大不掉,使代码丧失灵活性,难以应接新的需求。

结语

本文的前几篇文章中,介绍了很多 “写” 代码的技巧,

殊不知,“不写” 代码,也是需要技巧的,

忍住自己体内 “能写代码” 的洪荒之力,才能更好的将力量用对地方。


总而言之,少改别人的代码,能用的功能不要再写一遍,

用更少的代码解决问题,

在不明朗的情况下,先别开始写。


自此才能做到收放自如,游刃有余。