有良好的注釋習慣,不一定是合格程序員;但沒有良好注釋習慣,一定不是合格程序員。
程序注釋,我體會比較深刻,因為我的機房收費系統重構就是因為注釋寫的不好。
記得剛剛開始接觸編程的時候,完全不懂注釋的意義,但學習別人的代碼時,發現人家都有注釋,於是也學着用注釋點綴自己的程序,經過將近兩年的積累,我對注釋有了比較深刻的認識,接下來就與大家共享一下自己的經驗。
前篇廢話,其實關於注釋的討論、優點、注意事項等等,網上有很多很多,本小菜在此從實際應用角度出發,分享經驗。
一、注釋可以幫助理清思路。
寫注釋不僅僅是關愛他人,讓別人維護起來更加輕松,實際上寫注釋對理清思路有很大幫助。
正所謂代碼未動,注釋先行。舉個形象的例子:
用程序表達:如何把大象裝進冰箱里?
我們先不考慮實現細節,先用注釋勾勒出大致步驟,如下:
//打開冰箱門
//把大象放進冰箱
兩步就搞定,看起來少點什么,很重要的一步,忘了關上冰箱門。
//打開冰箱門
//把大象放進冰箱
//關上冰箱門
這樣看起來就很不錯了,但是還缺點東西,面向對象編程,要先創建對象。
//創建冰箱對象和大象對象
//打開冰箱門
//把大象放進冰箱
//關上冰箱門
這樣就差不多了!面向對象語言一般都有垃圾回收機制,不用手動銷毀對象。
經過這么一個寫注釋的過程,基本理清了程序思路,避免出現邏輯混亂,又能避免出現一些低級錯誤。通過注釋,不知不覺就寫出了一段漂亮的代碼。
什么?你認為這是個與程序無關的例子?別忘了,程序源於生活,高於生活,這個例子不就是數據庫操作的樣本嗎?
二、注釋要有深度。
這是個很有意思的話題,注釋沒深度有多可怕,見下圖:
可見,沒有深度的注釋,無論是對自己還是對別人,都是一種傷害,無疑會給后期維護造成諸多不便,致使維護效率低下。
圖中的注釋,完全是多余的,只是把代碼描述了一遍,對理解程序沒有任何幫助,反而會分散注意力。
注釋,既然寫,就要寫的有深度,它應該能直接指出矛盾所在,表明意圖。比如寫成這樣://判斷返回值是否符合標記,如果不符合,將怎樣….
因此,寫注釋也要用心,避免出現垃圾注釋。
三、別忘了模塊注釋。
上邊提到的所有注釋,都應該叫做局部注釋,比局部注釋范圍大點的是方法、類注釋,再大的就是模塊注釋。
模塊注釋,從我一開始接觸編程就經常羡慕別人能寫出那么漂亮的模塊注釋,我是屬於VB啟蒙,印象最深刻的就是嗷嗷叫的老馬,VB世界的泰斗,經常使用老馬寫的模塊,看到人家的注釋,簡直就是享受。
模塊注釋,至關重要,它基本闡述了整個模塊的信息,是模塊的宏觀描述,主要包括:版權、邏輯說明、調用說明、版本等。讓人一看就對整個模塊了然於胸,無需去讀代碼,便能直接使用。這樣模塊維護起來,無疑會讓人很舒服。
附上一個比較全面的模塊注釋模版。
/*************************************************
編寫者:
小組成員:
模塊名稱:
模塊功能:
調用示例:
依賴模塊:
創建日期:
版本號:
版權所有:
修改日期:
修改原因:
**********************************************/
但在自己實際編程時,卻經常忘了寫,琢磨着原因可能如下:
n 模塊注釋一般是模塊編寫、測試完成時才寫的,由於着急等因素,容易忽略。
n 目前編寫的程序比較小,沒有那么轟轟烈烈,容易忘記完善模塊注釋。
希望讀者能認真體會,時刻謹記模塊注釋,不要像我一樣。
四、適當用注釋代替刪除,保留痕跡。
很多情況下,代碼要經過不斷完善,最終才能成型,而在完善的過程中,可能有很多過渡代碼,按照我的習慣,太長或者不太重要的過渡代碼,直接刪除;而那些比較關鍵,價值比較高的,則用注釋保留下來,以后維護了可以提供一個參考。
因為程序無所謂好壞,符合需求的才是最好的,目前正確的程序,不代表永遠正確,神才知道哪天會用到那些過渡代碼,如果我們適當保留,以后維護可以輕松許多。
好啦,暫時就寫到這,以后有什么新的體會、心得,接着分享!
歡迎大家多多交流!
附:
寫好程序注釋的十三條建議:http://www.cnblogs.com/iyangyuan/archive/2012/12/05/2803842.html