讓那些無(wú)用代碼注釋見(jiàn)鬼去
摘要——注釋簡(jiǎn)單代碼會(huì)干擾對(duì)重要注釋的理解。程序開(kāi)發(fā)者最好能用最精要的注釋來(lái)解釋重點(diǎn)代碼。
本文引用地址:http://www.ex-cimer.com/article/201609/304233.htm舉個(gè)例子,你打開(kāi)一個(gè)電箱,里面有幾百根電線(xiàn),蒙了吧。再一看,每根電線(xiàn)上面都有一個(gè)整潔的小標(biāo)簽。真是謝天謝地啊!但是,當(dāng)你一個(gè)個(gè)去翻看標(biāo)簽的時(shí)候,見(jiàn)鬼的,幾乎所有的標(biāo)簽都是空白的!
然后,在你花了整整一個(gè)小時(shí)去瀏覽每一個(gè)小標(biāo)簽之后,終于給你找到12條有用的信息,真心喜大普奔!當(dāng)然,希望在你頭腦一片混亂的時(shí)候得出的結(jié)果仍然是正確的,沒(méi)有遺漏,呵呵呵。
當(dāng)我需要研究代碼的時(shí)候看到到處都是垃圾注釋?zhuān)?,我的感覺(jué)就和上面在那么多標(biāo)簽里面找有用的一樣。見(jiàn)鬼的,想從一大堆垃圾注釋里確定哪個(gè)有用簡(jiǎn)直就像大海撈針!
說(shuō)一個(gè)常用的開(kāi)源項(xiàng)目,里面都是這些垃圾注釋?zhuān)?/p>
/**
* __construct function.
*
* @access public
* @return void
*/
public function __construct() {
…
}
再來(lái)一個(gè):
/**
* Constructor
*/
public function __construct() {
…
}
還有一個(gè)
// Convert float to string
$value = float_to_string( $value );
這些注釋就跟電箱里的空白標(biāo)簽一樣,明晃晃的擺在那里,增加干擾還降低注釋的可用性??吹竭@樣的注釋?zhuān)植坏媚切┛蓱z的開(kāi)發(fā)人員要廢寢忘食了。
我敢肯定,那個(gè)把空白標(biāo)簽貼在每根電線(xiàn)上的電工自認(rèn)為這是一個(gè)特棒的主意,他幫助了那些在他后面來(lái)的人:他們有什么想寫(xiě)的,只要在這些已經(jīng)貼好的標(biāo)簽上面寫(xiě)就可以了。當(dāng)然也有可能他本來(lái)打算自己填好所有標(biāo)簽。撇開(kāi)他的好意不說(shuō),這樣做的結(jié)果真心是糟透了,還不如只貼那有用的12張呢!
在編程的時(shí)候,開(kāi)發(fā)人員經(jīng)常被告知要注釋?zhuān)撬麄冎泻苌儆腥酥涝鯓幼⑨尣藕?。所以開(kāi)發(fā)人員注釋代碼的時(shí)候,并不是因?yàn)橛斜匾?,而是因?yàn)樗麄冇X(jué)得這是義務(wù)。開(kāi)發(fā)人員認(rèn)為如果在代碼中多多注釋?zhuān)鼙憩F(xiàn)他們工作能力。
見(jiàn)鬼的,這也不知道是哪門(mén)子的理論。我最厭煩每隔幾行代碼就有注釋?zhuān)鴮?shí)際上卻屁用沒(méi)有。注釋的作用絕對(duì)不是為了純粹炫耀我們是“不明覺(jué)厲”的程序員,而是為了重點(diǎn)記錄我們搞這些代碼的原因。這樣一來(lái),那些垃圾注釋就能滾蛋了??聪旅娴睦?
// 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();
說(shuō)說(shuō)我的做法吧,當(dāng)我考慮是否要寫(xiě)注釋的時(shí)候,我就問(wèn)自己:如果以后回過(guò)頭來(lái)看這些代碼,我能不能一下子明白當(dāng)初為什么要這樣寫(xiě)?如果以后我會(huì)非常感謝這些注釋?zhuān)敲聪胍膊挥孟?,果斷?xiě)上注釋。否則,就讓那些垃圾注釋見(jiàn)鬼去吧。
評(píng)論