程式員應該避免寫注釋,程式員避免寫注釋
“程式員工作效率有多高,取決於他大腦中對當前項目的熟悉程度,即變數名稱、資料結構、編程介面以及工具類甚至是目錄等,這些細節記住的越多,效率也越高。”
注釋不是用來翻譯程式碼的,用代碼能說清楚的東西,就不要再用自然語言費腦子去寫了,集中精力寫出最優雅、品質高的代碼才是首要的。這並不是說可以完全不寫注釋,而是說不要為了添加不必要的注釋而打亂你的思路。我很贊成這兩篇文章的觀點《世上最糟糕的兩個變數名》以及陸其明老師翻譯的《避免在代碼裡寫注釋》,有一個好的變數名、方法名其實就是一段很好的注釋了,並且還會“自動更新”,你不用在未來最佳化這段代碼的時候同步更新注釋。
我們寫注釋的目的不是說這段代碼如何執行,而是想解釋為什麼要這麼執行,這也正是與其研究代碼、研究注釋,不如研究寫下這些代碼的人,借用一下阿特伍德的部落格原文中的例子:
r = n / 2;while ( abs( r - (n/r) ) > t ) {r = 0.5 * ( r + (n/r) );}System.out.println( "r = " + r );
這段代碼沒有注釋就完全看不懂了,如果加上一點注釋說明一下則效果要好得多:
// 用“牛頓-拉夫遜”近似法求解n的平方根r = n / 2;while ( abs( r - (n/r) ) > t ) {r = 0.5 * ( r + (n/r) );}System.out.println( "r = " + r );
這麼一來注釋的作用就完成體現出來了,但是如果不用注釋呢?像這樣:
private double SquareRootApproximation(n) {r = n / 2;while ( abs( r - (n/r) ) > t ) {r = 0.5 * ( r + (n/r) );}return r;}System.out.println( "r = " + SquareRootApproximation(r) );
“我一行注釋也沒有加,但這段神秘的代碼現在已經非常容易理解了。”
我們每個人在項目中應該都有遇到過這樣的事情,與其讓他寫下一堆注釋,不如告訴他命名的重要性,能完全、準確地描述所代表的事物,這無疑能提高整個項目的可讀性。在命名方面也有一些陷阱,如果一個命名不能做到準確的命名,這就和一段錯誤的注釋描述正確的行為一樣讓人更加費解,而且如果你在命名一個類時沒有考慮太多,在後期發覺不好,要更換名稱的時候會很麻煩,你可能要改標頭檔的名稱、實現檔案的名稱,各種調用以及匯入的地方,甚至是建立檔案時自動產生的一點注釋,就這要求我們在建立一個類和方法時,頭腦中至少要對將要做的事情“最佳化”好幾遍,能準確無誤的表達自己想表達的東西,對一些人來說,這個過程會很累,但確實是有必要。
《千萬不要把 bool 當成函數參數》這篇文章提出的問題很有意思,對於布爾變數,可以給布爾變數賦予隱含“真假”含義的名字。
我用C語言寫程式,不加註釋可以?解
注釋的目的是為了讓別人更好的理解你的代碼以方便維護和修改,對於電腦來說注釋是沒有任何意義
所以優秀的代碼不是電腦可以理解的代碼而是人可以理解的代碼
個人認為不是注釋不是必須的,應該儘可能的通過提高代碼品質來避免不必要的注釋
比如使用有明確意義的變數名稱,函數名稱要與函數功能一直,函數功能要單一等等
但是對於一些特別的演算法或者特殊的數值的使用等,使用必要的注釋來說明原因還是必要的
怎可以讓程式員在寫代碼時不忘記代碼注釋 ,有沒有什好的工具?
工具的確是沒有,不過這是個人習慣問題!但也並非完全屬於個人習慣,與所在處環境也有關係,我以前寫代碼也不愛注釋,但公司強烈要求寫注釋,加上身邊的朋友都有注釋的習慣,慢慢的我也就習慣了,