回複內容:
國標規定,VC工程注釋率為25%~50%,關鍵代碼注釋率為50%;
不滿足要求就無法通過軟體三方測評;
在滿足這個要求的前提下再談哪些需要注釋。
為了增加代碼注釋率,減少三方測評前“腦補”注釋的痛苦,
我們一般要求把《軟體設計文檔》中的"關鍵演算法”、“介面資料定義”等內容直接拷貝到代碼前面;
修改代碼時也順便把”關鍵演算法“、“介面資料定義”等的注釋也修改了;
修編《軟體設計文檔》時再用注釋中的”關鍵演算法“、“介面資料定義”等內容替換文檔中的相關內容;
通過這種辦法來保證文檔和代碼的一致性,減少軟體維護與人員更換時痛苦……我的觀點,
唯寫說明性注釋,不寫功能性注釋。也就是說,注釋Why,而不是
How和What。
類和函數多寫
文檔注釋,多少行無所謂,寫在最前面,只要你是注釋的Why。
函數內部,盡量少寫注釋。如果你的代碼需要寫注釋來說明他的功能,那麼這段代碼就需要
重構,最簡單的方法,最簡單的方法:
提取函數。這樣的好處是,函數名就是注釋。一個錯誤的觀點就是
注釋是給人看的,程式是給電腦看的。其實,程式是給人的,湊巧的是,它居然可以在電腦裡運行。
《重構:改善既有代碼的設計
》一書寫道:
每當感覺需要以注釋來說明點什麼的時候,我們就把需要說明的東西寫進一個獨立函數中,並以其用途(而非實現手法)命名。
每次我給別人講解「選擇排序」、「插入排序時」,他們都覺得太難了,而且幾乎每本資料結構教科書都是寫了一堆代碼和注釋,這絲毫沒有降低這個演算法的難度。
如果不寫注釋,而寫成函數呢?
虛擬碼:
array_ordered = []
loop_all_element(array, function(i){
el = select(array[i+1, array.length])
push(array_ordered, el)
......
})
- 構建一個有序數組,初始為空白
- 迴圈整個數組,進行如下操作:
- 從數組剩下的元素裡面選擇最小的(或最大的)
- 將最小元素放在有序數組的最後面(或者最前面)
不用我多解釋,你一眼就知道,這是
選擇排序。
插入排序呢?大同小異,我就不詳細寫了。
所以,
文檔注釋,多少無所謂。函數內、類內注釋,能不寫,就不寫。我是這樣看的,要看你寫的代碼的作用是什麼。
1.簡單代碼或指令碼,遵循命名規範,可以不寫注釋,檔案開始寫明作用即可。關鍵區段寫簡單注釋。
2.由多個檔案組成的複雜項目結構,檔案開始的說明最好由工具產生,類方法的輸入輸出要標明。
3.如果是開源項目,那情況又完全不一樣了,注釋簡直是越多越好,“為什麼這麼做”也越多越好。
以上是我的理解,還請各位指正PHP本身,並不需要什麼注釋
變數命名規範一點就行。
最多給每個方法給一段說明。