C#NET命名典范榜樣_第1頁(yè)
C#NET命名典范榜樣_第2頁(yè)
C#NET命名典范榜樣_第3頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C# .NET命名規(guī)范1. 前言本文檔是按照 Maxlab日常C#代碼書寫規(guī)范化需要而對(duì)MSDN中類庫(kù)開發(fā)的設(shè)計(jì)準(zhǔn)則的具體化,其中若有不詳之處可以參考準(zhǔn)則一文。MaxLab所有.NET項(xiàng)目都應(yīng)嚴(yán)格遵守本代碼規(guī)范中的代碼書寫要求,代碼書寫規(guī)范將作為項(xiàng)目審核標(biāo)準(zhǔn)之一,所以請(qǐng)務(wù)必認(rèn)真閱讀本文檔。2. 大小寫約定大小寫樣式本文中將出現(xiàn)兩種大小寫樣式,這里先分別定義:Pascal大小寫可以對(duì)三字符或更多字將標(biāo)識(shí)符的首字母和后面連接的每個(gè)單詞的首字母都大寫。符的標(biāo)識(shí)符使用 Pascal大小寫。例如:BackColorCamel大小寫標(biāo)識(shí)符的首字母小寫,而每個(gè)后面連接的單詞的首字母都大寫。例如:backCo

2、lor標(biāo)識(shí)符大小寫規(guī)則下表中列出常見的代碼元素的樣式規(guī)范和示例標(biāo)識(shí)符樣式示例類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)識(shí)符由多個(gè)單詞組成,請(qǐng)不要在各單詞之間使用分隔符,如下劃線( 連字符(“”)等。而應(yīng)使用大小寫來(lái)指示每個(gè)單詞的開頭。2. 所有公共的成員如:方法、屬性,都應(yīng)使用Pascal大小寫樣式首縮寫詞的大小寫規(guī)則縮寫詞分為以下兩種:首字母縮寫詞首字母縮寫詞是由術(shù)語(yǔ)或短語(yǔ)中各單詞的首字母構(gòu)成的單詞。例如,HTML 是 Hypertext Markup Language 的首字母縮寫。為了方便編碼規(guī)范的實(shí)施,本文規(guī)定受字母縮寫詞必須至少為兩個(gè)單詞,正好為兩個(gè)單詞的首字母縮寫詞稱其為短型首字母縮寫詞”兩個(gè)單詞以上的稱其為長(zhǎng)型首字母縮寫詞”單縮寫詞單縮寫詞是一個(gè)單詞的縮寫。例如,ID是identifie

4、r的縮寫。注意:可在標(biāo)識(shí)符中使用的兩個(gè)縮寫詞是ID和0K。在采用 Pascal大小寫格式的標(biāo)識(shí)符中,這兩個(gè)縮寫詞的大小寫形式應(yīng)分別為Id和Ok。如果在采用大小寫混合格式的標(biāo)識(shí)符中將這兩個(gè)縮寫詞用作首個(gè)單詞,則它們的大小寫形式應(yīng)分別為 id和ok。首字母縮寫詞有以下大小寫規(guī)則:短型首字母縮寫詞在Pascal大小寫樣式中,兩個(gè)字母都應(yīng)大寫。在Camel大小寫樣式中,如果是首個(gè)單詞,兩個(gè)字母都應(yīng)小寫。例如,名為DBRate的屬性是一個(gè)采用 Pascal大小寫格式的標(biāo)識(shí)符,它使用短型首字母縮寫詞(DB)作為首個(gè)單詞。又如,名為ioChannel的參數(shù)是一個(gè)采用大小寫混合格式的標(biāo)識(shí)符,它使用短型 首字母

5、縮寫詞(IO)作為首個(gè)單詞。長(zhǎng)型首字母縮寫詞,在任何大小寫樣式中都視為一個(gè)單詞。例如,名為XmlWriter的類是一個(gè)采用 Pascal大小寫格式的標(biāo)識(shí)符,它使用長(zhǎng)型首字母縮寫詞作為首個(gè)單詞。又如,名為htmIReader的參數(shù)是一個(gè)采用大小寫混合格式的標(biāo)識(shí)符,它使用長(zhǎng)型 首字母縮寫詞作為首個(gè)單詞。復(fù)合詞的大小寫規(guī)則:所有復(fù)合詞在任何大小寫樣式中都視為一個(gè)完整單詞。例如,hashtable是一個(gè)緊湊格式的復(fù)合詞,應(yīng)將其視為一個(gè)單詞并相應(yīng)地確定大小寫。如果采用Pascal大小寫格式,則該復(fù)合詞為Hashtable;如果采用大小寫混合格式,則該復(fù)合詞為 hashtable。若要確定某個(gè)單詞是否是緊

6、湊格式的復(fù)合詞,請(qǐng)查閱最新的詞典。區(qū)分大小寫大小寫準(zhǔn)則只是為了使標(biāo)識(shí)符更易于閱讀和辨認(rèn)。不能將大小寫規(guī)則用作避免庫(kù)元素之間的命名沖突的手段。3. 通用命名約定通用命名約定討論的是如何為庫(kù)元素選擇最適當(dāng)?shù)拿Q。這些準(zhǔn)則適用于所有標(biāo)識(shí)符。 后面各節(jié)討論特定元素(如命名空間或?qū)傩裕┑拿?。選擇名稱1. 請(qǐng)選擇易讀的標(biāo)識(shí)符名稱例如,英文屬性名稱HorizontalAlignment 比AlignmentHorizontal 更具可讀性。2可讀性比簡(jiǎn)潔性更重要例如,屬性名稱 CanScrollHorizontally 比ScrollableX (指 X軸,但意義不明確)更好。3不要使用下劃線、連字符或任

7、何其他非字母數(shù)字字符4不要使用匈牙利表示法匈牙利表示法是在標(biāo)識(shí)符中使用一個(gè)前綴對(duì)參數(shù)的某些元數(shù)據(jù)進(jìn)行編碼,如標(biāo)識(shí)符的數(shù)據(jù)類型。5避免使用與常用編程語(yǔ)言的關(guān)鍵字沖突的標(biāo)識(shí)符雖然符合CLS的語(yǔ)言必須提供將關(guān)鍵字用作普通字的方法,最佳做法不要求強(qiáng)制開發(fā)人員了解如何實(shí)現(xiàn)。對(duì)于大多數(shù)編程語(yǔ)言,語(yǔ)言參考文檔都會(huì)提供語(yǔ)言所使用的關(guān)鍵字列表。下表提供了某些常用編程語(yǔ)言的參考文檔的鏈接。語(yǔ)言鏈接C#C#參考C+C+ Lan guage Refere neeVisual BasieVisual Basie 參考縮寫和首字母縮寫單詞盡量避免使用縮寫或首字母縮寫詞。這類名稱的可讀性較差。同樣,要確定某個(gè)首字母縮寫詞是

8、否已受到廣泛認(rèn)可也是很困難的。不要將縮寫或縮略形式用作標(biāo)識(shí)符名稱的組成部分。例如,使用 On Butto nClick而不要使用 On B tn Click。除非必要,不要使用任何未被廣泛接受的首字母縮寫詞。有關(guān)縮寫的大寫規(guī)則,請(qǐng)參見-首縮寫詞的大小寫規(guī)則4. 程序集和DLL的名稱所有程序集名稱都必須和項(xiàng)目的命名空間相對(duì)應(yīng)。程序集信息 中 都必須有且僅有一行assembly: AssemblyCopyright("Copyright 2007-2008 MaxLab.")。5. 命名空間的名稱所有命名空間都需以 MaxLab為根命名空間。為命名空間選擇的名稱應(yīng)指示命名空間中

9、的類型所提供的功能。例如,命名空間包含的類型允許開發(fā)人員使用套接字通過(guò)網(wǎng)絡(luò)進(jìn)行 通信。命名空間名稱的一般格式如下:MaxLab.(<產(chǎn)品>|<技術(shù) >).< 性質(zhì) >.< 子命名空間>例如,。命名空間和其中的類型不要使用相同的名稱。例如,不要在將“ Debug的類?!?Debug用作命名空間名稱的同時(shí),又在該命名空間中提供一個(gè)名為命名空間一般準(zhǔn)則不要引入寬泛的類型名稱,如Element、Node、Log和 Message。在通常情況下,這樣極可能導(dǎo)致類型名稱沖突。應(yīng)對(duì)寬泛的類型名稱進(jìn)行限定(例如 FormElement、XmlNode Event

10、Log、SoapMessage)。應(yīng)用程序命名空間準(zhǔn)則不要在單個(gè)應(yīng)用程序模型內(nèi)為命名空間中的多個(gè)類型指定相同的名稱。例如,如果要編寫 Windows窗體應(yīng)用程序開發(fā)人員要使用的特殊控件庫(kù),則不應(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)該是名詞短語(yǔ),其中名詞是由類型表示的實(shí)體。例如,Button、Stack和File都具有名稱,用于標(biāo)識(shí)由類型表示的實(shí)體。從開發(fā)人員的角度選擇標(biāo)識(shí)實(shí)體的名稱;名稱應(yīng)反映使用場(chǎng)合。下面的準(zhǔn)則適用于如何選擇類型名稱:1. 按照Pascal大小寫格式,使用名詞或名詞短語(yǔ)(或偶爾使用形容詞短語(yǔ))為類、接 口和值類型命名。2. 不要為類名加前綴(如字母 C)。3. 接口不適用此規(guī)則,它應(yīng)以字母I開頭。4. 考慮在派生類的末尾使用基類名稱。例如,從 Stream繼承的 Framework類型以 Stream 結(jié)尾,從 Exception繼承的 類型以Exc

12、eption結(jié)尾。5. 為接口名稱加上字母I前綴,以指示該類型為接口。6. 在定義類/接口對(duì)(其中類是接口的標(biāo)準(zhǔn)實(shí)現(xiàn))時(shí),一定要確保類和接口的名稱除接 口名稱以字母I為前綴外,二者應(yīng)完全相同。例如,F(xiàn)ramework 提供 lAsyncResult 接口和 AsyncResult 類。泛型類型參數(shù)的名稱用描述性名稱為泛型類型參數(shù)命名,除非單個(gè)字母的名稱已完全可以自我說(shuō)明而無(wú)需描述性名稱。IDictionary是一個(gè)符合此準(zhǔn)則的接口的示例。對(duì)具有一個(gè)單字母類型參數(shù)的類型,考慮將字母T用作這些類型的類型參數(shù)名稱。將字母T作為描述性類型參數(shù)名稱的前綴??紤]在參數(shù)名稱中指示置于類型參數(shù)上的約束。例如,

13、約束于ISession的參數(shù)可稱為TSessi on。常見類型的名稱下面的準(zhǔn)則提供的命名約定有助于開發(fā)人員了解某些類的使用場(chǎng)合: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)前所用語(yǔ)言支持的關(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)先級(jí) 高于

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)則還用來(lái)保留指定的后綴;除非類型滿足該準(zhǔn)則表述的條件,否則不應(yīng)使用該后綴。例如,如果類型不是從Exception直接或間接繼承的,則類型名稱不能以Exception結(jié)尾。枚舉的名稱不要在枚舉值名稱中使用前綴。例如,不要對(duì)ADO枚舉使用ad之類的前綴,也不要對(duì)多格式文本枚舉使用rtf之類的前綴,依此類

17、推。F面的代碼示例演示了不正確的枚這還意味著不應(yīng)在枚舉值名稱中包含枚舉類型名稱。 舉值命名。public enum Teams TeamsAlpha, TeamsBeta, TeamsDelta不要將Enum用作枚舉類型的后綴。不要在標(biāo)志枚舉的名稱中添加Flags作為后綴。對(duì)枚舉使用單數(shù)名稱,除非枚舉值是位域。對(duì)使用位域值的枚舉(也稱為標(biāo)志枚舉)使用復(fù)數(shù)名稱。7. 類型成員的名稱類型包含以下幾種成員:方法、屬性、字段、事件方法的名稱使用動(dòng)詞或動(dòng)詞短語(yǔ)作為方法的名稱。通常,方法對(duì)數(shù)據(jù)進(jìn)行操作,因此,使用動(dòng)詞描述方法的操作可使開發(fā)人員更易于了解方法所執(zhí)行的操作。定義由方法執(zhí)行的操作時(shí),應(yīng)從開發(fā)人員

18、的角度仔細(xì)選擇明確的名稱。不要選擇描述方法如何執(zhí)行其操作的動(dòng)詞,也就是說(shuō),不要使用實(shí)現(xiàn)細(xì)節(jié)作為方法名稱。屬性的名稱使用名詞、名詞短語(yǔ)或形容詞作為屬性的名稱。名詞短語(yǔ)或形容詞適合于屬性, 因?yàn)閷傩员4鏀?shù)據(jù)。不要使用與 Get方法同名的屬性。例如,不要將一個(gè)屬性命名為 EmployeeRecord,又將一個(gè)方法命名為 GetEmployeeRecord。開發(fā)人員會(huì)不知道使用哪個(gè)成員來(lái)完成其編程任務(wù)。使用肯定性短語(yǔ)作為布爾值屬性的名稱(如使用Can Seek而不使用Can tSeek)。此外,還可以為布爾值屬性添加前綴(如Is、Can或Has),但要注意使用得當(dāng)??紤]為屬性提供與其類型相同的名稱。如

19、果某個(gè)屬性已強(qiáng)類型化為某個(gè)枚舉,則該屬性可與該枚舉同名。例如,如果有一個(gè)名為 CacheLevel的枚舉,則返回其中一個(gè)枚舉值的屬性也可以命名 為 CacheLevel。事件的名稱使用動(dòng)詞或動(dòng)詞短語(yǔ)作為事件的名稱。在為事件命名時(shí),使用現(xiàn)在時(shí)或過(guò)去時(shí)表示時(shí)間上的前后概念。例如,在窗口關(guān)閉之前引發(fā)的關(guān)閉事件可命名為"Closing, ”窗口關(guān)閉之后引發(fā)的關(guān)閉事件可命名為 “ Closed。不要使用“ Before或“ After作為前綴或后綴來(lái)指示之前和之后發(fā)生的事件。使用后綴EventHandler命名事件處理程序(用作事件類型的委托)。在事件處理程序簽名中使用命名為“ sen de和” “ e的兩個(gè)參數(shù)。sender參數(shù)的類型應(yīng)為 Object, e參數(shù)應(yīng)是 EventArgs的實(shí)例或繼承自EventArgs的實(shí)例。使用EventArgs后綴命名事

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論