是雏还是鹰mdash;mdash;编程规范之代码注释
注釋能使代碼更加容易理解,更加容易跟蹤。出色的注釋就像一幅好的設計藍圖,能夠引導閱讀者通過你的應用程序的曲折之處,能夠說明預期的運行結果和可能出現的異常情況。注釋可以為后來的維護者帶來極大的方便,無論是類說明注釋,方法說明注釋,還是變量說明注釋,這些都是不可或缺的。沒了注釋代碼就是“天書”,有的讀者可能會說花點時間來看也不費勁嘛!想象一下閱讀類似于上文中的那樣沒有注釋的幾千,幾萬,幾十萬代碼是多么費時費力的事,但是這些時間原本是可以通過幾行注釋節省的。
書接上回還是以上次文中的代碼為例。可悲的是文中代碼和大多數人寫的代碼一樣——沒有注釋。
1.???????? 寫注釋的人有著共同的特點,不寫注釋的人各有各的理由。
l? 寫注釋太費時間
實際上,在編寫代碼時加上注釋根本不需要多少時間。
l? 有些過程很難注釋。
通常而言,如果代碼的一個部分很難注釋,那么如果沒有注釋,其他人就更難理解你的代碼。
PS:復雜而很難注釋的代碼也許不是什么好代碼。
如果你發現難以給全部或者部分過程加上注釋,那么請回頭好好檢查一下你的代碼,你很可能會發現更好的解決辦法。
2.???????? 注釋原則(摘錄),供大家參考
l? 不要簡簡單單重復代碼做些什么,不能給代碼增加信息的注釋還不如不寫。
l? 用注釋來說明何時可能出錯和為什么出錯,方便后期調試。
l? 在編寫代碼前進行注釋,以文字的形式展現你的思路。
l? 增強注釋的可讀性,語句完整、表意清楚;格式上的縮進、對齊等美觀操作也是不可少的。
l? 為每個過程賦予一個注釋標頭,C#中的///(VB中是’’’)可以在過程調用時清楚的指導此過程的信息。
l? 內部注釋方面:
(1) 在每個if和select語句的前面加上注釋,讓讀者語句因為什么而分支,不同的分支結果會是什么。
(3) 在每個循環的前面加上注釋,保證讀者明白此循環的作用。
(4) 在修改了全局變量(如果有的話)的每個語句前面加上注釋,方便后期代碼調試。
修改后的代碼
1: ''' <summary> 2: ''' 將DataGridview中的數據導出到Excel 3: ''' <summary> 4: ''' <param name="dgvSouse">要導出到Excel的DataGridView<param> 5: ''' <param name="blnIsOnlyVisible">判斷是否添加所有DataGridView中的內容<param> 6: ''' <remarks><remarks> 7: Sub ExportExcel(ByVal dgvSouse As DataGridView, ByVal blnIsOnlyVisible As Boolean) 8: '嘗試執行導出操作,出現異常則拋出. 9: Try 10: Dim IntColumnNumHead As Integer '定義表頭循環的列數. 11: Dim IntRowNumText As Integer '定義內容循環的行數. 12: Dim IntColumnNumText As Integer '定義內容循環的列數. 13: Dim IntCurrentRow As Integer '定義當前的列. 14: Dim IntCurrentCol As Integer '定義當前的行. 15: Dim Excel As Excel.Application = New Excel.Application '定義Excel程序. 16: Excel.Application.Workbooks.Add(True) '增加一個Excel. 17: IntCurrentCol = 1 '記錄當前的列數. 18: '循環將表頭填入Excel 19: For IntColumnNumHead = 0 To dgvSouse.ColumnCount - 1 20: '判斷用戶是否添加所有的內容. 21: If blnIsOnlyVisible Then 22: '如果用戶只添加可見內容則判斷哪些列不可見. 23: If dgvSouse.Columns(IntColumnNumHead).Visible Then 24: '只添加可見的列. 25: Excel.Cells(1, IntCurrentCol) = dgvSouse.Columns(IntColumnNumHead).HeaderText 26: IntCurrentCol = IntCurrentCol + 1 27: End If 28: Else 29: '如果用戶添加所有內容則全部添加. 30: Excel.Cells(1, IntColumnNumHead + 1) = dgvSouse.Columns(IntColumnNumHead).HeaderText 31: End If 32: Next 33: IntCurrentRow = 2 '記錄當前的行數. 34: '循環將內容填入Excel中. 35: For IntRowNumText = 0 To dgvSouse.RowCount - 1 36: IntCurrentCol = 1 37: For IntColumnNumText = 0 To dgvSouse.ColumnCount - 1 38: '判斷用戶是否添加所有的內容. 39: If blnIsOnlyVisible Then 40: '如果用戶只添加可見內容則判斷哪些列不可見. 41: If dgvSouse.Columns(IntColumnNumText).Visible Then 42: '只添加可見的列. 43: Excel.Cells(IntRowNumText + 2, IntCurrentCol) = dgvSouse.Rows(IntRowNumText).Cells(IntColumnNumText).Value 44: IntCurrentCol = IntCurrentCol + 1 45: End If 46: Else 47: '如果用戶添加所有內容則全部添加. 48: Excel.Cells(IntRowNumText + 2, IntColumnNumText + 1) = dgvSouse.Rows(IntRowNumText).Cells(IntColumnNumText).Value 49: End If 50: Next 51: Next 52: Excel.Visible = True '將Excel設為可見. 53: Catch ex As Exception 54: Throw New Exception("導出失敗") '拋出異常. 55: End Try 56: End Sub從此寫代碼不再是為了運行(不值一提)更是為了讓后來者(包括自己)閱讀!
附:微軟編碼規范檢查工具StyleCop
注:雛,幼小的(多指鳥類);雛,雞子也。——《說文》(摘自百度百科)
轉載于:https://www.cnblogs.com/beijiguangyong/archive/2011/05/18/2302771.html
總結
以上是生活随笔為你收集整理的是雏还是鹰mdash;mdash;编程规范之代码注释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: “翔鸣尚俦偶”下一句是什么
- 下一篇: 葫芦多少钱一个啊?