举个例子,你打开一个电箱,里面有几百根电线,蒙了吧。再一看,每根电线上面都有一个整洁的小标签。真是谢天谢地啊!但是,当你一个个去翻看标签的时候,见鬼的,几乎所有的标签都是空白的!
然后,在你花了整整一个小时去浏览每一个小标签之后,终于给你找到12条有用的信息,真心喜大普奔!当然,希望在你头脑一片混乱的时候得出的结果仍然是正确的,没有遗漏,呵呵呵。
当我需要研究代码的时候看到到处都是垃圾注释,唉,我的感觉就和上面在那么多标签里面找有用的一样。见鬼的,想从一大堆垃圾注释里确定哪个有用简直就像大海捞针!
说一个常用的开源项目,里面都是这些垃圾注释:
/**
* __construct function.
*
* @access public
* @return void
*/
public function __construct() {
…
}
再来一个:
/**
* Constructor
*/
public function __construct() {
…
}
还有一个
// Convert float to string
$value = float_to_string( $value );
这些注释就跟电箱里的空白标签一样,明晃晃的摆在那里,增加干扰还降低注释的可用性。看到这样的注释,怪不得那些可怜的开发人员要废寝忘食了。
我敢肯定,那个把空白标签贴在每根电线上的电工自认为这是一个特棒的主意,他帮助了那些在他后面来的人:他们有什么想写的,只要在这些已经贴好的标签上面写就可以了。当然也有可能他本来打算自己填好所有标签。撇开他的好意不说,这样做的结果真心是糟透了,还不如只贴那有用的12张呢!
在编程的时候,开发人员经常被告知要注释,但是他们中很少有人知道怎样注释才好。所以开发人员注释代码的时候,并不是因为有必要,而是因为他们觉得这是义务。开发人员认为如果在代码中多多注释,能表现他们工作能力。
见鬼的,这也不知道是哪门子的理论。我最厌烦每隔几行代码就有注释,而实际上却屁用没有。注释的作用绝对不是为了纯粹炫耀我们是“不明觉厉”的程序员,而是为了重点记录我们搞这些代码的原因。这样一来,那些垃圾注释就能滚蛋了。看下面的例子:
// We need to account for product price changes,
// so we get the price of the product when each order occurred
$order_prices = $this->get_order_prices();
说说我的做法吧,当我考虑是否要写注释的时候,我就问自己:如果以后回过头来看这些代码,我能不能一下子明白当初为什么要这样写?如果以后我会非常感谢这些注释,那么想也不用想,果断写上注释。否则,就让那些垃圾注释见鬼去吧。