c# 編碼規范
c# 編碼規范 1
1 命 名 約 定 4
1.1 常用命名術語說明 4
1.2 名稱空間命名 4
1.3 類命名 4
異常類命名 5
1.4 局部變量命名 5
1.5 只讀靜態變量 5
1.6 類私有變量 5
1.7 屬性命名 5
1.8 接口命名 5
1.9 方法命名 6
參數 6
1.10 結構 6
1.11 事件命名 6
1.12 枚舉類型 6
1.13 委托命名delegate 6
1.14 類對象命名 6
1.15 Attribute 7
1.16 控件命名 7
1.17 大小寫敏感 8
1.18 縮寫簡寫規則 8
1.19 使用統一的量尺 9
1.20 ID命名 9
2 代碼格式化 9
2.1 要達到的目的 9
2.2 {}的位置 9
2.3 if、if else的格式 10
2.4 for、foreach的格式 10
2.5 while/do-while的格式 11
2.6 switch的格式 11
2.7 try的格式 12
2.8 空格 13
2.9 在執行統一任務的各個語句組之間插入一個空行。好的代碼應由按邏輯順序排列的進程或相關語句組構成。 14
2.10 名稱空間寫法 14
2.11 #region寫法 14
3 代碼注釋 14
3.1 注釋的目的 14
3.2 函數體內的注釋 14
3.3 對類文件進行屬性注釋說明 14
3.4 避免對很顯然易懂的語句進行注釋說明 15
3.5 代碼應該能作到自我解釋代碼作用的功能。 15
3.6 邏輯點內注釋 15
3.7 注釋來說明何時可能出錯和為什么出錯 15
3.8 在編寫代碼前進行注釋 15
3.9 純色字符注釋行只用于主要注釋 15
3.10 避免形成注釋框 15
3.11 注釋那些部分 15
3.12 增強注釋的可讀性 17
3.13 對注釋進行縮進,使之與后隨的語句對齊 17
3.14 請在每個if語句的前面加上注釋 17
3.15 在每個switch語句的前面加上注釋 17
3.16 在每個循環的前面加上注釋 17
3.17 如果一個程序塊內有多個尾隨注釋,每個注釋的縮進應該保持一致 18
4 錯誤與異常處理 18
4.1 采用適當的日志機制來報告異常 18
4.2 只對錯誤采用異常處理 18
4.3 不要使用異常實現來控制程序流程結構 18
4.4 只捕捉特定的異常,而不是一般的異常。 18
4.5 別寫太大的 try-catch 模塊 19
4.6 自定義異常類 19
5 類成員設計 20
5.1 設計類和方法時,要達到下列目的 20
創建更加容易調試和維護的方法 20
創建具有強大內聚力的類 20
創建高度專用的方法 20
創建松散連接的方法 20
盡量使方法具有獨立性 20
提高方法的扇入性 20
降低方法的扇出性 20
5.2 名稱空間引用 20
在代碼里,避免使用類似 System.Web.WebUIControls.Page 這樣完整的引用名稱,而應在頂部用 using 聲明 System.Web.WebUIControls,而后以 Page進行編碼 21
5.3 類設計 21
創建具有強大內聚力的類 21
成員排列規則 21
自定義屬性類必須以 Attribute 為后綴,如 SomeAttribute 22
自定義錯誤異常類必須以 Exception 為后綴,如SomeException。 22
在泛型(Generics)代碼里,類型參數均以 Type 為后綴的一個名詞來命名 22
每個類文件名應盡量保持與內部類名一致 23
盡量避免手動去修改工具環境自動生成的代碼 23
避免在一個類文件里放置多個類 23
一個類文件里應該有且僅有一個命名空間,避免在一個類文件里包含多個不同的命名空間 23
避免在一個類文件里代碼超過 500 行(除去自動生成的代碼) 23
盡量使用類庫包含程序的業務邏輯,以使應用程序集代碼最小化 23
數據結構里,應該總是更傾向使用C#的范型generic 23
盡量縮小變量的作用域 23
5.4 接口設計 23
每個接口不應當有超過20個成員的情況,一般應保持在12個左右 24
避免使用事件作為接口成員 24
避免使用抽象方法,而用接口替代 24
5.5 方法設計 24
創建松散連接和高度專用的方法 24
使所有方法都執行專門的任務 24
盡量使方法成為自成一體的獨立方法 25
有返回值的方法必須在方法命名里包含對該返回值的信息描述,如GetObjectStat()。 25
局部變量的聲明,應盡可能緊靠在它首次被使用的地方 25
一個方法里的代碼避免超過 25 行,最多不能超過 50 行(除去空行、注釋) 25
一行代碼最多不要超過 80 個字符 25
利用Debug類對每個假設應進行條件檢查 25
聲明變量或方法為public類型應盡量謹慎,避免暴露過多不必要的細節 25
盡量不要在代碼內進行硬編碼,應該用const將之聲明為常量變量 25
利用Debug類對每個假設應進行條件檢查 25
總使用以 0 為第一個數標的數組 26
盡量不要使用 goto 語句 26
避免直接用方法作為條件語句里的Boolean值進行判斷 26
對于引用類型的數組的初始化,必須總是用for或foreach語句循環初始化 26
應該也盡量避免直接使用方法做為返回值,為每個方法賦予單個退出點 27
將某些信息(如錯誤提示信息)直接傳遞給最終用戶 27
避免使用強制轉換,推薦使用as操作符進行防御性轉換 27
當需要創建一個長字符串時,推薦使用StringBuilder,而非string 27
this用法 27
避免使用不易理解的數字,用有意義的標識來替代(枚舉和常量) 28
用參數在方法之間傳遞數據 28
5.6 屬性設計 28
5.7 事件設計 29
5.8 其他規則 29
6 項目環境設置 29
7 違背規范 31
查詢此規范詳細文檔建議使用文檔結構圖形式(菜單 -> 視圖 -> 文檔結構圖)
1 命 名 約 定
1.1 常用命名術語說明
術語 說明
Pascal 大小寫 將標識符的首字母和后面連接的每個單詞的首字母都大寫?梢詫θ址蚋嘧址臉俗R符使用 Pascal 大小寫。例如:BackColor
Camel 大小寫 標識符的首字母小寫,而每個后面連接的單詞的首字母都大寫。例如:backColor
1.2 名稱空間命名
NET Framework 類型使用點語法命名方案,該方案隱含了層次結構的意思。此技術將相關類型分為不同的命名空間組,以便可以更容易地搜索和引用它們。全名的第一部分(最右邊的點之前的內容)是命名空間名。全名的最后一部分是類型名。例如,System.Collections.ArrayList 表示 ArrayList 類型,該類型屬于 System.Collections 命名空間。System.Collections 中的類型可用于操作對象集合。此命名方案使擴展 .NET Framework 的庫開發人員可以輕松創建分層類型組,并用一致的、帶有提示性的方式對其進行命名。庫開發人員在創建命名空間的名稱時應使用以下原則:
“公司名稱.技術名稱.軟件產品代號”或“公司名稱.產品技術代號”
例如,Nd.ClassLibrary.Charting 命名空間就表示Nd公司里的公用類庫里的Charting畫圖類庫。又如Nd.91Net.GovernmentInfoSharing表示Nd公司里的91平臺大項目里的政務信息發布與服務系統 。
又如: net91com.Movies.DataAccess 名稱空間標識 91.COM 電影站的數據訪問層程序集。
|
|