代码注释,就是用大白话告诉别人(或者三个月以后的自己),我写的这些计算机程序,它到底想干嘛。除去某些特殊场合,这些大白话通常都用程序员的母语来写,这样可以表达得更清楚——当然方言例外,不是所有的人都知道什么叫“抵拢倒拐”——但是无论这些白话有多白,它总是不可避免会给别人带来很多困扰。
首先,很多人(包括我自己)不喜欢在写代码的同时写注释,虽然在读别人代码时常会因为注释太少而恨得牙痒痒。这种己所不欲却施于人的行为,除了扣奖金并加强思想教育以外,还有一种解决方法,那就是将函数写得足够短,短到一个函数只做一件事情,然后给函数取一个贴切的好名字,这样创建出来的源程序,简直就是由注释自然搭成的——这种方式有时会成为懒人的借口,当项目经理因为看不到注释而大发雷霆时,我们这些懒人就会轻蔑地告诉他说:“我们的代码是自注释的”。
反过来说,有的注释纯粹只是为了增加你抓狂的程度而已,比如我就看到过一大堆动机不明的代码前面只写了八个大字的注释:“万般无奈出此下策”,他没有告诉我上策是什么,也没有说出无奈的原由,所以我很抓狂;还看过一段代码的注释很诗意,只几字:“相见不如怀念”,这个不但让我抓狂,而且还让我因遐想而分心。我自己也写过无聊的注释,仅仅是想表达一下不满情绪罢了,比如我在某处写道:“不要问我这里3.472这个魔数是怎么来的,我拿到这段代码的时候这个数字就存在了”,的确,如果这个数字是9527的话,我倒还知道些典故。
还有种注释我只在网上看到过,现实生活中尚未得见,比如说在 if (a==b) 后面加了一句:“如果变量a的值等于b的值”,这种注释我估计只有两种用途,一种是源代码字数(包括注释)与奖金直接挂勾,另一种就是专门用来侮辱阅读者的智商。
最后,要说到最最恶劣的一种注释:那就是代码功能完全改过但忘记相应修改注释了。阅读到这种和代码意义完全相反的注释,通常会有短时间的精神分裂,说不定还会在这段恶劣注释后面再加一句同样恶劣的注释:“白痴!”