写下这行代码时,只有我和上帝知道是怎么回事01.烂代码的路径依赖02.对于烂代码应采取零容忍03.代码规范的重要性04.文档的重要性

01.烂代码的路径依赖

如果你维护过运行了几年,甚至十几年的代码库,肯定会有这样的体验:

“这一坨代码是干嘛用的?看半天也不知什么意思?”

"把这些看不懂的代码删了?要是出事了谁背锅?算了,还是维持原状吧“

”只是简单地做一个功能的修改,却要同时去改五六处代码!不行,一定要重构..."

"算了,这里的代码有说不清的玄机,重构相当于在给自己挖更大的坑,还是按照原来的写法吧..."

于是,烂代码就如同腐烂的苹果,一开始只是烂了几个点,很快就会蔓延,直至烂透,再整体推倒重来

我见过很多程序员在遇到前任留下的烂代码时,首先骂几句:”靠,这TM谁写的垃圾,这怎么维护啊?“

吐槽一番后,就继续按照前任们的写法继续写下去。如果有其他人问为什么要这么写,他们就会把一切责任都归咎于前任。就好像别人写的代码就是豆腐渣,而自己却无辜纯洁得如同白莲花。

烂代码的演化如同在雪地里走路,前人踏出了一个浅浅的坑。后面的人为了贪图方便,继续沿着这个坑前行,慢慢地,这些坑就变成了路,后续的人都沿袭这条路走到黑,即使有些人想改变现状,踏出了一些分支,也无法改变整个局面,反而令路线更加令人困惑。

足迹

02.对于烂代码应采取零容忍

同样一个人,如果在夜间大排档吃饭,他会大声喧哗,抽烟,甚至随地吐痰。他并不觉得这样有什么不妥,因为周边的环境就是这样。

倘若他是去星级酒店吃饭,自然就会约束自己的行为,瞬间变成一个绅士。

同理,一个新人如果看到公司的代码写得很整洁,都是统一的规范,每个文件、每个类、每个函数都有相应的注释。而且代码提交后还会有其他人进行Review,那么即使他是一个菜鸟,也会模仿着其他人的代码规范,毕竟谁也不会在光洁如面的星级酒店当众吐痰...

但如果新人看到公司的代码风格各异,命名毫无章法,存在大量冗余的,不知所云的代码,而且多处采用硬编码的形式。那么他肯定会觉得这家公司的代码可以随便写,只要能跑起来就可以了。即使是一个本身很讲究编码规范的人,在这种代码环境下,也难免会写出冗余糟糕的代码。就好像大学宿舍只要有一个人不讲究卫生,整个环境就很脏乱,因为其他人不可能去维护公共的环境。

因此,烂代码是有极强的感染性。破窗原理同样适用于代码。对于烂代码,应该在一开始就采取零容忍的态度。即使有些代码迫于进度压力,不得已而为之,也要充分写好注释,防止污染到其他代码

破窗

03.代码规范的重要性

有些程序员恃才傲物,对于代码规范嗤之以鼻,觉得自己独特的风格才是最优雅的,自己是一个艺术家,不应该被死板的规范所束缚。

我想大多数程序员的能力都比不上google的工程师吧,而google的开发人员,入职的第一件事就是熟悉他们的代码规范,他们的代码规范极其严谨,细化到每一个细节,如:命名规范,注释规格,大括号是否换行,缩进用tab还是空格,变量名用驼峰法还是下划线...

规范

制定规范的目的是提高团队协作的效率,如果放任不同人以自己喜欢的风格写代码,那么整个代码库将会变成一个令人眩晕的大杂烩。特别是对于那些很灵活的编程语言,不遵循规范的后果是灾难性的。

对此,PHP程序员应该深有体会。毫不夸张地说,1000个PHP程序员会有1000个以上的代码风格,即使是同一个人,在不同的时期,不同的心情下,写出来的代码风格也不同,反正怎么写都不会报错,那就怎么爽怎么来。写的人是爽了,后面维护的人就痛苦了。尤其是强迫症的同学,看到那些不符合自己规范的代码,一定要去修正,而他的修正又干涉了别人的自由。于是,就互相伤害吧...

虽然每个人都有自己的偏好,但在团队中,应该遵循同一套的规范,才能使合作的成本降到最低。在团队中,通过迥异的代码风格来标新立异是愚蠢的行为。就如同在正式的宴席上,所有人都西装革履,而你却一件大背心,一个大裤衩,趿拉着拖鞋,唱着小苹果入场。

你,觉得这样合适吗?

04.文档的重要性

当我写下这一行代码时,只有我和上帝知道是什么意思。一个月后,只有上帝才知道是什么意思了...

程序员最痛恨的事:"为什么别人不写个文档?", 而当要自己写文档时,又觉得:”这东西,哪用写文档,看下代码就知道了“。于是,当下一个人接手代码时,又是一阵吐槽,最终很可能自己重新实现功能。很多时候,理解别人的代码,还不如自己重新写来得更高效。

每一个程序员都必须认识到文档的重要性,学会写文档是必备技能。

我们都是很健忘的,即使是自己写的代码,一个月后,可能都忘了当时为什么这么写了。然后又要重复去翻各种聊天记录,追踪代码,才慢慢地将逻辑串起来。这些耗费时间的事不会创造任何的价值,却占用了程序员很大部分的时间。

除非你是高手,能将代码写得十分简洁易懂,做到”代码即文档“。否则,文档就是你大脑在某一时刻的快照。往后,你或者他人只要根据文档的索引,就能知道这个需求的具体逻辑是怎样的,是为了解决什么问题,具体的实现方式如何。

假如你能养成写文档的习惯,你肯定能节省很多瞎忙的时间。

同样是炼金术,为什么西方能衍生出化学?因为他们有记录的习惯,每次实验是可以重现的,而我们信奉的是口口相传,把这些上升到了道的层面。这种说不清,道不明的所谓“道”,是无法流程化的,而更像是一种玄机,类似于黑魔法的存在。

编程,应该遵循有记录、可重现的科学方式,而不是靠瞎猜的黑魔法方式。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏生信技能树

GTX.Zip--基因领域唯一100%安全无误的企业级压缩大咖!

目前国内约莫有85台illumina的最新版novaseq测序仪,通常可以做到70元/Gbp的单价,一个人重测序标准的30X,也就是(3G X 30)90Gbp...

3803
来自专栏企鹅号快讯

python程序员开发必备的5大工具,你用过几个?

随着python的火热,不少的程序员业余时间都会研究这门编程语言。 利用python开发,大牛用vim,接了2个显示器写python,气场甚是强大。 有些程序员...

2687
来自专栏ThoughtWorks

其实你早就学过响应式编程 | TW洞见

今日洞见 文章作者/图片 来自ThoughtWorks:佟达。 本文所有内容,包括文字、图片和音视频资料,版权均属ThoughtWorks公司所有,任何媒体、网...

35712
来自专栏大数据挖掘DT机器学习

利用pthon爬虫和数据分析在618抢购Macbook pro

好久没玩点有意思的了,这次借618这个购物节,自己也要搞台mbp,顺便搞一波大新闻. 对某宝的其中四家店,再加上某东一家店,对比同一款机型,对价格进行监控...

6047
来自专栏程序人生

高效能程序员的七个习惯

昨天收到一个读者留言,问作为程序员,有什么学习和工作上的好习惯可以借鉴?想了想,干脆附庸风雅一下,总结个『高效能程序员的七个习惯』吧。Disclaimer:一家...

3689
来自专栏程序员互动联盟

jAVA发展历程

1991 绿色计划 (Green Project) 1991年1月 一个名为“Green Project”的项目启动。该项旨在为家用电器提供支持,使这些电器智能...

41411
来自专栏hbbliyong

怎样去阅读源码,这篇文章值的你一读

作者:刘欣 公众号:码农翻身 链接:http://mp.weixin.qq.com/s/PDhEKM2XG_qzOmBjWb-M7Q "没有经验的技术...

3256
来自专栏斑斓

敏捷实践 | 代码是如何腐烂的

代码是如何腐烂的?这是一个很大的命题,因为这种腐化的代码样本可能会体现不同的特征。若要彻底总结,可能会又是一本《重构》。我自然没有这个能力和知识。好在有一个简便...

38210
来自专栏Java学习网

10个使用Java最广泛的现实领域

10个使用Java最广泛的现实领域 如果你是一个初学者,刚刚开始学习Java,你可能会想Java有什么用呢?除了Minecraft貌似也看不到其他用Java写的...

3418
来自专栏IT大咖说

IT大咖撩段子

01 ? 02 大一刚学C语言,第二次上机课,当我发现我照着书抄写的程序在运行之后的黑框里跳出一排烫烫烫烫烫,当时就震惊了。你们能想象一个来自小城,在大学之前没...

3187

扫码关注云+社区

领取腾讯云代金券