优秀的程序员真的不写注释吗?
记得刚参加工作,经理就给组里的人发了一份他写的项目代码,当时面对这样一个大项目,看了几天,组里的人都抱怨代码没有注释,难读。这是经理就说了句话,我记到了现在:
“你们老是抱怨别人的代码没有注释,可是你们有给自己的代码写注释吗?”
有些大牛也觉得给自己的代码加上注释,就好像是对他的一种侮辱:“我的代码写得这么优雅,你难道看不懂吗?注释是多余的!”
的确如此,我们希望看到别人的注释,同时又不想给自己的代码写注释。对于那些开源大型项目,一般会有良好的注释,团队本身也非常优秀,管理规范,项目拥有大量的用户,这类项目一般不会缺少注释,是否自愿的就不一定了。
想必都读过代码的人都有体会,在自己水平范围内,实现某个功能和看懂别人的实现代码,后者的难度往往大于前者。尽管很多人说好代码不需要注释,本身就是“自注释”。但是你会发现,说这种话的人,要么是大牛,要么是菜鸟。就身边的观察而已,当读别人的代码时,是希望有必要的注释的。
大多数公司里,接手别人的代码,是缺乏必要的注释的。github上的个人Repositories是普遍缺乏注释的。他们为什么不写注释?
因为写注释是利他行为。
特别是公司项目,接手代码的是同职位的人,互为竞争。因此,即使公司规范中要求写注释,你也明明知道,以后会有人接手你的项目,可是你很少会为后人写注释。我接手过10个项目,只有一个项目是有少许注释的。
带有注释的代码已成为一种奢望。如果你是项目组长,与其勉强同事们写上注释,不如提倡Coding Without Comments。当不提倡写注释时,他们会更用心地写好变量名,函数名。不得不承认,注释虽好,写好却难。比如维护困难,当实现修改后,注释经常忘记同步。有的注释是模糊的,多余的。时间久远后,谁也搞不懂这段注释是什么意思了。可见,即使要写注释,尽量是简明扼要。
写好注释跟写好代码一样,是艺术活。