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