版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、C# .NET命名規(guī)范1. 前言本文檔是按照 Maxlab日常C#代碼書寫規(guī)范化需要而對MSDN中類庫開發(fā)的設(shè)計(jì)準(zhǔn)則的具體化,其中若有不詳之處可以參考準(zhǔn)則一文。MaxLab所有.NET項(xiàng)目都應(yīng)嚴(yán)格遵守本代碼規(guī)范中的代碼書寫要求,代碼書寫規(guī)范將作為項(xiàng)目審核標(biāo)準(zhǔn)之一,所以請務(wù)必認(rèn)真閱讀本文檔。2. 大小寫約定大小寫樣式本文中將出現(xiàn)兩種大小寫樣式,這里先分別定義:Pascal大小寫可以對三字符或更多字將標(biāo)識符的首字母和后面連接的每個(gè)單詞的首字母都大寫。符的標(biāo)識符使用 Pascal大小寫。例如:BackColorCamel大小寫標(biāo)識符的首字母小寫,而每個(gè)后面連接的單詞的首字母都大寫。例如:backCo
2、lor標(biāo)識符大小寫規(guī)則下表中列出常見的代碼元素的樣式規(guī)范和示例標(biāo)識符樣式示例類PascalAppDomain枚舉類型PascalErrorLevel枚舉值PascalFatalError事件PascalValueCha nged異常類PascalWebExcepti on只讀的靜態(tài)字段PascalRedValue接口PascalIDisposable方法PascalToStri ng命名空間PascalSystem.Drawi ng參數(shù)CameltypeName屬性PascalBackColor常量大寫REGEX_PARSE_URL除了遵循以上大小寫約定外還需注意以下約定(除常量為特例):1.
3、 如果標(biāo)識符由多個(gè)單詞組成,請不要在各單詞之間使用分隔符,如下劃線( 連字符(“”)等。而應(yīng)使用大小寫來指示每個(gè)單詞的開頭。2. 所有公共的成員如:方法、屬性,都應(yīng)使用Pascal大小寫樣式首縮寫詞的大小寫規(guī)則縮寫詞分為以下兩種:首字母縮寫詞首字母縮寫詞是由術(shù)語或短語中各單詞的首字母構(gòu)成的單詞。例如,HTML 是 Hypertext Markup Language 的首字母縮寫。為了方便編碼規(guī)范的實(shí)施,本文規(guī)定受字母縮寫詞必須至少為兩個(gè)單詞,正好為兩個(gè)單詞的首字母縮寫詞稱其為短型首字母縮寫詞”兩個(gè)單詞以上的稱其為長型首字母縮寫詞”單縮寫詞單縮寫詞是一個(gè)單詞的縮寫。例如,ID是identifie
4、r的縮寫。注意:可在標(biāo)識符中使用的兩個(gè)縮寫詞是ID和0K。在采用 Pascal大小寫格式的標(biāo)識符中,這兩個(gè)縮寫詞的大小寫形式應(yīng)分別為Id和Ok。如果在采用大小寫混合格式的標(biāo)識符中將這兩個(gè)縮寫詞用作首個(gè)單詞,則它們的大小寫形式應(yīng)分別為 id和ok。首字母縮寫詞有以下大小寫規(guī)則:短型首字母縮寫詞在Pascal大小寫樣式中,兩個(gè)字母都應(yīng)大寫。在Camel大小寫樣式中,如果是首個(gè)單詞,兩個(gè)字母都應(yīng)小寫。例如,名為DBRate的屬性是一個(gè)采用 Pascal大小寫格式的標(biāo)識符,它使用短型首字母縮寫詞(DB)作為首個(gè)單詞。又如,名為ioChannel的參數(shù)是一個(gè)采用大小寫混合格式的標(biāo)識符,它使用短型 首字母
5、縮寫詞(IO)作為首個(gè)單詞。長型首字母縮寫詞,在任何大小寫樣式中都視為一個(gè)單詞。例如,名為XmlWriter的類是一個(gè)采用 Pascal大小寫格式的標(biāo)識符,它使用長型首字母縮寫詞作為首個(gè)單詞。又如,名為htmIReader的參數(shù)是一個(gè)采用大小寫混合格式的標(biāo)識符,它使用長型 首字母縮寫詞作為首個(gè)單詞。復(fù)合詞的大小寫規(guī)則:所有復(fù)合詞在任何大小寫樣式中都視為一個(gè)完整單詞。例如,hashtable是一個(gè)緊湊格式的復(fù)合詞,應(yīng)將其視為一個(gè)單詞并相應(yīng)地確定大小寫。如果采用Pascal大小寫格式,則該復(fù)合詞為Hashtable;如果采用大小寫混合格式,則該復(fù)合詞為 hashtable。若要確定某個(gè)單詞是否是緊
6、湊格式的復(fù)合詞,請查閱最新的詞典。區(qū)分大小寫大小寫準(zhǔn)則只是為了使標(biāo)識符更易于閱讀和辨認(rèn)。不能將大小寫規(guī)則用作避免庫元素之間的命名沖突的手段。3. 通用命名約定通用命名約定討論的是如何為庫元素選擇最適當(dāng)?shù)拿Q。這些準(zhǔn)則適用于所有標(biāo)識符。 后面各節(jié)討論特定元素(如命名空間或?qū)傩裕┑拿?。選擇名稱1. 請選擇易讀的標(biāo)識符名稱例如,英文屬性名稱HorizontalAlignment 比AlignmentHorizontal 更具可讀性。2可讀性比簡潔性更重要例如,屬性名稱 CanScrollHorizontally 比ScrollableX (指 X軸,但意義不明確)更好。3不要使用下劃線、連字符或任
7、何其他非字母數(shù)字字符4不要使用匈牙利表示法匈牙利表示法是在標(biāo)識符中使用一個(gè)前綴對參數(shù)的某些元數(shù)據(jù)進(jìn)行編碼,如標(biāo)識符的數(shù)據(jù)類型。5避免使用與常用編程語言的關(guān)鍵字沖突的標(biāo)識符雖然符合CLS的語言必須提供將關(guān)鍵字用作普通字的方法,最佳做法不要求強(qiáng)制開發(fā)人員了解如何實(shí)現(xiàn)。對于大多數(shù)編程語言,語言參考文檔都會(huì)提供語言所使用的關(guān)鍵字列表。下表提供了某些常用編程語言的參考文檔的鏈接。語言鏈接C#C#參考C+C+ Lan guage Refere neeVisual BasieVisual Basie 參考縮寫和首字母縮寫單詞盡量避免使用縮寫或首字母縮寫詞。這類名稱的可讀性較差。同樣,要確定某個(gè)首字母縮寫詞是
8、否已受到廣泛認(rèn)可也是很困難的。不要將縮寫或縮略形式用作標(biāo)識符名稱的組成部分。例如,使用 On Butto nClick而不要使用 On B tn Click。除非必要,不要使用任何未被廣泛接受的首字母縮寫詞。有關(guān)縮寫的大寫規(guī)則,請參見-首縮寫詞的大小寫規(guī)則4. 程序集和DLL的名稱所有程序集名稱都必須和項(xiàng)目的命名空間相對應(yīng)。程序集信息 中 都必須有且僅有一行assembly: AssemblyCopyright("Copyright 2007-2008 MaxLab.")。5. 命名空間的名稱所有命名空間都需以 MaxLab為根命名空間。為命名空間選擇的名稱應(yīng)指示命名空間中
9、的類型所提供的功能。例如,命名空間包含的類型允許開發(fā)人員使用套接字通過網(wǎng)絡(luò)進(jìn)行 通信。命名空間名稱的一般格式如下:MaxLab.(<產(chǎn)品>|<技術(shù) >).< 性質(zhì) >.< 子命名空間>例如,。命名空間和其中的類型不要使用相同的名稱。例如,不要在將“ Debug的類。“ Debug用作命名空間名稱的同時(shí),又在該命名空間中提供一個(gè)名為命名空間一般準(zhǔn)則不要引入寬泛的類型名稱,如Element、Node、Log和 Message。在通常情況下,這樣極可能導(dǎo)致類型名稱沖突。應(yīng)對寬泛的類型名稱進(jìn)行限定(例如 FormElement、XmlNode Event
10、Log、SoapMessage)。應(yīng)用程序命名空間準(zhǔn)則不要在單個(gè)應(yīng)用程序模型內(nèi)為命名空間中的多個(gè)類型指定相同的名稱。例如,如果要編寫 Windows窗體應(yīng)用程序開發(fā)人員要使用的特殊控件庫,則不應(yīng)引入名為Checkbox的類型,因?yàn)樵搼?yīng)用程序模型已存在同名類型。核心命名空間準(zhǔn)則不要指定會(huì)與核心命名空間中的任何類型發(fā)生沖突的類型名稱。例如,不要使用Directory作為類型名稱,因?yàn)檫@會(huì)與Directory類型沖突。技術(shù)命名空間準(zhǔn)則不要分配會(huì)與單個(gè)技術(shù)命名空間內(nèi)的其他類型發(fā)生沖突的類型名稱。不要引入會(huì)導(dǎo)致技術(shù)命名空間的類型與應(yīng)用程序模型命名空間中的類型發(fā)生沖突的類 型名稱(除非該技術(shù)不用于該應(yīng)用程
11、序模型)。6. 接口、類和結(jié)構(gòu)的名稱通常,類型名稱應(yīng)該是名詞短語,其中名詞是由類型表示的實(shí)體。例如,Button、Stack和File都具有名稱,用于標(biāo)識由類型表示的實(shí)體。從開發(fā)人員的角度選擇標(biāo)識實(shí)體的名稱;名稱應(yīng)反映使用場合。下面的準(zhǔn)則適用于如何選擇類型名稱:1. 按照Pascal大小寫格式,使用名詞或名詞短語(或偶爾使用形容詞短語)為類、接 口和值類型命名。2. 不要為類名加前綴(如字母 C)。3. 接口不適用此規(guī)則,它應(yīng)以字母I開頭。4. 考慮在派生類的末尾使用基類名稱。例如,從 Stream繼承的 Framework類型以 Stream 結(jié)尾,從 Exception繼承的 類型以Exc
12、eption結(jié)尾。5. 為接口名稱加上字母I前綴,以指示該類型為接口。6. 在定義類/接口對(其中類是接口的標(biāo)準(zhǔn)實(shí)現(xiàn))時(shí),一定要確保類和接口的名稱除接 口名稱以字母I為前綴外,二者應(yīng)完全相同。例如,F(xiàn)ramework 提供 lAsyncResult 接口和 AsyncResult 類。泛型類型參數(shù)的名稱用描述性名稱為泛型類型參數(shù)命名,除非單個(gè)字母的名稱已完全可以自我說明而無需描述性名稱。IDictionary是一個(gè)符合此準(zhǔn)則的接口的示例。對具有一個(gè)單字母類型參數(shù)的類型,考慮將字母T用作這些類型的類型參數(shù)名稱。將字母T作為描述性類型參數(shù)名稱的前綴。考慮在參數(shù)名稱中指示置于類型參數(shù)上的約束。例如,
13、約束于ISession的參數(shù)可稱為TSessi on。常見類型的名稱下面的準(zhǔn)則提供的命名約定有助于開發(fā)人員了解某些類的使用場合:01.向自定義屬性類添加Attribute后綴。02. ObsoleteAttribute 和 AttributeUsageAttribute 是符合此準(zhǔn)則的類型名稱。03.向在事件中使用的類型(如C#事件的返回類型)的名稱添加 EventHandler后 綴。04. AssemblyLoadEventHandler是符合此準(zhǔn)則的委托名稱。05.向不是事件處理程序的委托的名稱添加Callback后綴。06.不要向委托添加Delegate后綴。07.向擴(kuò)展 System
14、.EventArgs 的類添加 EventArgs 后綴。08.不要從System.Enum類派生;使用當(dāng)前所用語言支持的關(guān)鍵字。例如,在C#中應(yīng)使用en um關(guān)鍵字。09.向從 System.Exception繼承的類型添加 Exception后綴。10. 向 實(shí) 現(xiàn)System.Collectio ns.lDictio nary或System.Collections.Generic.lDictionary<TKey, TValue>的類型添加 Dictionary 后綴。注意,System.Collections.IDictionary 是特定類型的集合,但此準(zhǔn)則的優(yōu)先級 高于
15、以下更為一般的集合準(zhǔn)則。11. 向?qū)崿F(xiàn)、System.Collecti ons.l Collect ion、Enumerable< T>、System.Collecti on s.Ge nericCollect ion<T>或 System.Collections.Generic.lList<T>的類型添加 Collection 后綴。12. 向從 繼承的類型添加Stream后綴。13. 向從System.Security.CodeAccessPermission 繼承的類型或?qū)崿F(xiàn)System.Security.IPermission 的類型添加 Permi
16、ssion 后綴。以上準(zhǔn)則中提及的從某個(gè)其他類型繼承的類型,指的是所有的繼承者,而不只是直接繼承的類型。例如,向從Exception繼承的類型添加 Exception后綴"這一準(zhǔn)則意味著在繼承層次結(jié) 構(gòu)中具有Exception的任何類型都應(yīng)該使用以Exception結(jié)尾的名稱。每條這樣的準(zhǔn)則還用來保留指定的后綴;除非類型滿足該準(zhǔn)則表述的條件,否則不應(yīng)使用該后綴。例如,如果類型不是從Exception直接或間接繼承的,則類型名稱不能以Exception結(jié)尾。枚舉的名稱不要在枚舉值名稱中使用前綴。例如,不要對ADO枚舉使用ad之類的前綴,也不要對多格式文本枚舉使用rtf之類的前綴,依此類
17、推。F面的代碼示例演示了不正確的枚這還意味著不應(yīng)在枚舉值名稱中包含枚舉類型名稱。 舉值命名。public enum Teams TeamsAlpha, TeamsBeta, TeamsDelta不要將Enum用作枚舉類型的后綴。不要在標(biāo)志枚舉的名稱中添加Flags作為后綴。對枚舉使用單數(shù)名稱,除非枚舉值是位域。對使用位域值的枚舉(也稱為標(biāo)志枚舉)使用復(fù)數(shù)名稱。7. 類型成員的名稱類型包含以下幾種成員:方法、屬性、字段、事件方法的名稱使用動(dòng)詞或動(dòng)詞短語作為方法的名稱。通常,方法對數(shù)據(jù)進(jìn)行操作,因此,使用動(dòng)詞描述方法的操作可使開發(fā)人員更易于了解方法所執(zhí)行的操作。定義由方法執(zhí)行的操作時(shí),應(yīng)從開發(fā)人員
18、的角度仔細(xì)選擇明確的名稱。不要選擇描述方法如何執(zhí)行其操作的動(dòng)詞,也就是說,不要使用實(shí)現(xiàn)細(xì)節(jié)作為方法名稱。屬性的名稱使用名詞、名詞短語或形容詞作為屬性的名稱。名詞短語或形容詞適合于屬性, 因?yàn)閷傩员4鏀?shù)據(jù)。不要使用與 Get方法同名的屬性。例如,不要將一個(gè)屬性命名為 EmployeeRecord,又將一個(gè)方法命名為 GetEmployeeRecord。開發(fā)人員會(huì)不知道使用哪個(gè)成員來完成其編程任務(wù)。使用肯定性短語作為布爾值屬性的名稱(如使用Can Seek而不使用Can tSeek)。此外,還可以為布爾值屬性添加前綴(如Is、Can或Has),但要注意使用得當(dāng)??紤]為屬性提供與其類型相同的名稱。如
19、果某個(gè)屬性已強(qiáng)類型化為某個(gè)枚舉,則該屬性可與該枚舉同名。例如,如果有一個(gè)名為 CacheLevel的枚舉,則返回其中一個(gè)枚舉值的屬性也可以命名 為 CacheLevel。事件的名稱使用動(dòng)詞或動(dòng)詞短語作為事件的名稱。在為事件命名時(shí),使用現(xiàn)在時(shí)或過去時(shí)表示時(shí)間上的前后概念。例如,在窗口關(guān)閉之前引發(fā)的關(guān)閉事件可命名為"Closing, ”窗口關(guān)閉之后引發(fā)的關(guān)閉事件可命名為 “ Closed。不要使用“ Before或“ After作為前綴或后綴來指示之前和之后發(fā)生的事件。使用后綴EventHandler命名事件處理程序(用作事件類型的委托)。在事件處理程序簽名中使用命名為“ sen de和” “ e的兩個(gè)參數(shù)。sender參數(shù)的類型應(yīng)為 Object, e參數(shù)應(yīng)是 EventArgs的實(shí)例或繼承自EventArgs的實(shí)例。使用EventArgs后綴命名事
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度成都家庭財(cái)產(chǎn)分割離婚協(xié)議書公證服務(wù)指南4篇
- 2025年度國際能源項(xiàng)目技術(shù)人員派遣合同2篇
- 2025年度地下管道探測沖擊鉆合同3篇
- 2025年度公共場所消毒承包服務(wù)合同范本4篇
- 二零二五年度農(nóng)產(chǎn)品加工貨物質(zhì)押擔(dān)保合同樣本3篇
- 2025年度門窗安裝與室外遮陽一體化服務(wù)合同4篇
- 二零二五年度船舶買賣合同船舶交易國際物流服務(wù)合同4篇
- 2025年度打樁機(jī)租賃與工程進(jìn)度調(diào)整及成本控制合同4篇
- 2025年銷售業(yè)務(wù)員勞動(dòng)合同模板(含合同履行與變更)3篇
- 2025版學(xué)校游泳池水質(zhì)監(jiān)測與消毒服務(wù)承包合同示范3篇
- 2025屆安徽省皖南八校高三上學(xué)期8月摸底考試英語試題+
- 工會(huì)資金采購管理辦法
- 玩具活動(dòng)方案設(shè)計(jì)
- Q∕GDW 516-2010 500kV~1000kV 輸電線路劣化懸式絕緣子檢測規(guī)程
- 2024年湖南汽車工程職業(yè)學(xué)院單招職業(yè)技能測試題庫及答案解析
- 家長心理健康教育知識講座
- GB/T 292-2023滾動(dòng)軸承角接觸球軸承外形尺寸
- 軍人結(jié)婚函調(diào)報(bào)告表
- 民用無人駕駛航空器實(shí)名制登記管理規(guī)定
- 北京地鐵6號線
評論
0/150
提交評論