专栏名称: CSDN
CSDN精彩内容每日推荐。我们关注IT产品研发背后的那些人、技术和故事。
目录
相关文章推荐
雷科技  ·  小米,也要“造人”了?!!! ·  2 天前  
新浪科技  ·  【#曝iPhone17Air为轻薄砍配置## ... ·  2 天前  
新浪科技  ·  【也有望推出Ultra?#小鹏申请注册P7U ... ·  2 天前  
新浪科技  ·  【#BBA或成下一个诺基亚#】2024年年底 ... ·  2 天前  
51好读  ›  专栏  ›  CSDN

十年的老代码,你敢动吗?

CSDN  · 公众号  · 科技媒体  · 2017-07-16 22:37

正文


前言


你入职一家新单位,被告知需要维护一个老产品,经理找质管给你开通了SVN权限,告诉你迁出哪个分支——就是那个十年前已经定型的分支,就是那个超过6代程序员维护过的分支——然后告诉你说,就在这个分支上改,添加一个新接口,以便支持H5 Video。


于是你开始看代码,云山雾罩,各种痛苦,完全搞不懂业务逻辑和代码的关系,也闹不明白这块代码为什么这么写那块代码是几个意思。你战战兢兢如履薄冰思前想后寸步难行。


你去问进来5个多月还没转正的老同事,他告诉你他也不懂,让你凑合着加个新接口实现了功能就行。加了新功能就行。


你去问干了快一年的资格更老的同事,他叮嘱你千万别动里面的代码,千万别管里面什么样,就在外面包一层,先交付新功能,其它的有时间再说,里面的逻辑十年没人动过了,没有一个人能说清楚怎么回事,你要是改,一不留神就遍地狼烟。


你怎么办?


关于老代码的禁忌


对程序员来讲,维护老代码是最恶心的事儿之一。没说的,就是恶心,公认的恶心,连我这种自认为随意、灵活、代码适应性强、没有原则的老程序员也觉得维护老代码是一种罪。如果你恨一个程序员,就让他去维护年久失修摇摇欲坠的老代码吧。


然而,本文开始时提到的情况却几乎是每一个程序员都会碰见的。老代码啊,我们恨之厌之烦之远之却不可弃之。对一家软件企业来讲,老代码就是资产,是多年积累下来的核心资产和重要竞争力。尤其是软件产品,一份代码先后几波人维护过是常有的事。


这种时候,老代码就老而成精有了生命,每当有新人进来,它都会用特有的超出我们耳力边界的高频发出声音:警告,警告,一波新程序员正在赶来,快给它们点厉害杀杀它们的士气。


而且,部分熟悉老代码的老程序员也会谆谆告诫我们,这几个文件不要动,这几个类不要动,这里一改就奔溃,那里一改就连不上服务器,雷区标识很多。还有那一进来就因为被告诫而根本就没看过老代码的程序员也会告诫我们,那代码谁也不懂,多少年没人动过了,不动为妙,免惹麻烦……


故事就这样发生了,禁忌就如此这般传承下来。我们知道那里可能有问题,可是没人敢去动它,等最后一个熟悉一部分老代码的程序员悠然远去,此地空余叹息,从此以后,新来的程序员就成了想吃香蕉的猴子。



动,还是不动?

老代码成了禁忌,我们往往被迫(没时间或不愿意或害怕或不屑)在漂浮海面的冰山的尖尖上修修补补,深入了解深层代码成了谁也不愿言说的痛。


然而都不懂看代码都不动老代码,老代码只能越来越老越来越陈腐,越来越没人敢动。越往后动的代价越高越没人敢动。这对公司和团队都不好。裹一层又一层,终将积重难返成为裹脚布,无人问津。


而一旦老代码没人能够把握,这些作为资产的代码实际上已经丢了,不再有价值增长了,原本领先的优势随着同行们百舸争流的追赶渐渐失去了。


这是对企业是一种损失。读程序员其实也是一种损失。


为什么这般讲?


情人还是老的好


程序员有个毛病:自己不写文档却老抱怨别人的代码没文档,而碰见了有文档的代码却又往往弃文档如敝履。所以,业界流传一句话:代码即文档。所以,业界的代码和文档,少见匹配的。


哇咔咔咔,对吧。







请到「今天看啥」查看全文