




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編碼命名規(guī)范(.NET)(很全,很實用)一、命名約定1.常用命名術(shù)語說明 Pascal命名格式 將標(biāo)識符的首字母和后面連接的每個單詞的首字母都大寫。可以對三字符或更多字符的標(biāo)識符使用 Pascal 大小寫。例如:BackColor Camel命名格式 標(biāo)識符的首字母小寫,而每個后面連接的單詞的首字母都大寫。例如:backColor2.名稱空間命名 創(chuàng)建命名空間的名稱時應(yīng)使用以下原則: “公司名稱.技術(shù)名稱.軟件產(chǎn)品代號”或“公司名稱.產(chǎn)品技術(shù)代號” 例如:Nd.ClassLibrary.Charting 命名空間就表示Nd公司里的公用類庫里的Charting畫圖類庫。 又如:Net91com.
2、Movies.DataAccess 名稱空間標(biāo)識 91.COM 電影站的數(shù)據(jù)訪問層程序集。3.類命名使用完整的單詞,避免用縮寫。比如ButtonGrid比BtnGrd要長,但是完整從而可讀性好。 一般使用名詞。類通常表示一種對象,而對象一般使用具有名詞性質(zhì)的名稱。 異常類命名:類以Exception結(jié)尾, 比如class EQException: Exception4.局部變量命名 私有字段、函數(shù)參數(shù)和函數(shù)內(nèi)部聲明的變量使用camel Casing 不使用的是用以指明字段作用域的前綴。如 s_作為共享字段或靜態(tài)字段的前綴,以及把g_作為全局變量的前綴。 不使用用以指明數(shù)據(jù)類型的匈牙利前綴表示法
3、,如(strReturn)。在Microsoft Visual Studio .NET環(huán)境中,只要在代碼編輯器中將鼠標(biāo)移到域名上,就可以得到關(guān)于字段或變量的類型信息。另外,類型前綴限制了開發(fā)者在需要時改變變量的類型的能力,或者更糟糕的是,開發(fā)者改變了變量的類型,卻沒有為變量重新命名,從而產(chǎn)生具有誤導(dǎo)性的代碼。5.只讀靜態(tài)變量 Pascal大小寫6.類私有變量 _ + Pascal大小寫。如:_BackColor7.屬性命名使用Pascal Casing。 屬性名稱通常都是名詞。例如Text、SelectedIndex和Width。8.接口命名 使用Pascal Casing。 在接口名稱前綴添
4、加前綴 I 。 接口名稱盡量具有描述性,并使用形容詞,因為接口常常用于給一個類添加某種能力?;谛稳菰~的名稱有IComparable和IFormattable等9.方法命名 使用Pascal Casing。 方法名通常是動詞。方法實現(xiàn)一個對象的行為功能。方法執(zhí)行某些操作。方法名的例子有Read、Write、Start和Stop。 當(dāng)重載方法時,參數(shù)的順序和命名要一致。 定義方法名時不要使用縮寫。 方法參數(shù) Camel大小寫結(jié)構(gòu)10.事件命名 使用Pascal Casing。 事件名稱通常是動詞。比如Click、Load和Paint11.枚舉類型使用Pascal Casing。如:EQForma
5、tConditionOperator。枚舉值也是Pascal,比如EQFormatConditionOperator. Equal12.委托命名delegate AfterOperationHandler,總是以Handler為后綴結(jié)尾13.類對象命名 使用obj前綴Pascal命名的方式,來告知我們這個變量是一個對象 比如:EQApplication objApp = new EQApplication();14.Attribute Pascal大小寫,并以Attribute結(jié)尾15.控件命名ButtonbtnbtnOKCalendarcalCheckBoxchkchkReadOnlyChe
6、ckBoxListchklCompareValidatorvalcCustomValidatorvalxDataGridgridDataListlistDropDownListddlHyperLinklnkImageimgImageButtonibtnLabellblLinkButtonlbtnListBoxlstPanelpnlRadioButtonradRadioButtonListradlRangeValidatorvalgRegularExpressionvaleRequiredFieldValidatorvalrTabletblTableCelltblcTableRowtblrTex
7、tBoxtxttxtLastNameValidationSummaryvals 16.其它命名ConnectionconnCommandcmdParameterparamDataAdapteradptDataReaderdrDataSetdsDataTabledtDataRowrowDataColumncolDataRelationrelDataViewdv17.注意: 不要使用兩個字母一樣,但大小寫不一樣的命名來做命名空間,否則在一些不區(qū)分大小寫的語言里將不能正確區(qū)分這些命名空間聲明。例如:namespace ee.cummings和namespace EE.cummings這兩個聲明 不要
8、使用大小寫區(qū)分參數(shù)的形式來創(chuàng)建方法。比如:void MyFunction(string a, string A) 不要使用大小寫的不同來分別命名一個屬性。比如: int Color get,set int COLOR get,set 不要使用大小寫的不同來分別命名一個方法的名字。比如: void calculate() void Calculate() 不要使用標(biāo)志名稱的一部分作為該標(biāo)志名稱的縮寫或簡寫。比如:GetWindow簡寫為GetWin。 盡量避免用縮寫方式來對方法的參數(shù)命名,即方法的參數(shù)命名盡量保持完整,讓人一目了然。 盡量避免就一個字母的命名,如 i 或 t,而用 index 或
9、 temp二、代碼格式化1.的位置 與各單獨占一行。例如: if(x 5) /代碼 2.if、if else的格式 if(condition) DoSomething(); if(condition) DoSomething(); else DoSomethingOther(); if(condition) DoSomething(); else if(condition) DoSomethingOther(); else DoSomethingOtherAgain(); 3.for、foreach的格式 /for格式 for(int i = 0; i 5; +i) / 代碼 /foreach
10、的格式 foreach(int i in IntList) / 代碼 4.whileswitch的格式 /while格式 while(condition) / 代碼 /switch的格式 switch(condition) case A: . break; case B: . break; default: . break; 5.try的格式 try . catch(Exception e) . /或者 try . catch(Exception e) . finally . 6.空格 對于有兩個或兩個以上空格時,一般不要使用空格來表示縮進(jìn),使用Tab 逗號、分號之后有一個空格 如:TestM
11、ethod(a, b, c); 操作符前后有一個空格,但是單目運(yùn)算符除外(例如: !運(yùn)算符)。 如:for(int i = 0; i 10; +i)7.在執(zhí)行統(tǒng)一任務(wù)的各個語句組之間插入一個空行。8.名稱空間寫法,各類名稱空間插入空行,同一類命命空間按字母序號排列 如: using System; using System.Text; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.
12、SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using net91com.Movies.DataAccess; using net91com.Movies.Business; using net91com.CommonComponent;三、代碼注釋1.注釋的目的 a. 文字說明代碼的作用 (即為什么要用編寫該代碼,而不是如何編寫); b. 確指出該代碼的編寫思路和邏輯方法 ; c. 人們注意到代碼中的重要轉(zhuǎn)折點 ; d. 使代碼的閱讀
13、者不必在他們的頭腦中仿真運(yùn)行代碼的執(zhí)行方法2.對類文件進(jìn)行屬性注釋說明 /= / 公司: / 項目名稱: / 模塊名稱: / 開發(fā)人員: / 開發(fā)日期: / 功能簡介: / 最后修改時間: / 修改人員: /=3.避免對很顯然易懂的語句進(jìn)行注釋說明4.代碼應(yīng)該能作到自我解釋代碼作用的功能。5.注釋來說明何時可能出錯和為什么出錯6.在編寫代碼前進(jìn)行注釋,給類、屬性或方法前面加上功能注釋7.注釋的內(nèi)容 a.實參/ 參數(shù) 參數(shù)類型 , 參數(shù)用來做什么, 任何約束或前提條件b.字段/屬性 字段描述 , 注釋所有使用的不變量, 并行事件可見性決策 c.類 類的目的 ,已知的問題 , 類的開發(fā)/維護(hù)歷史
14、, 注釋出采用的不變量 , 并行策略 d.接口 目的 它應(yīng)如何被使用以及如何不被使用 e.局部變量 用處/目的f.成員函數(shù)注釋 成員函數(shù)做什么以及它為什么做這個 哪些參數(shù)必須傳遞給一個成員函數(shù) 成員函數(shù)返回什么 已知的問題 任何由某個成員函數(shù)拋出的異常 可見性決策 成員函數(shù)是如何改變對象的 包含任何修改代碼的歷史 如何在適當(dāng)情況下調(diào)用成員函數(shù)的例子適用的前提條件和后置條件 g.成員函數(shù)內(nèi)部注釋 控制結(jié)構(gòu) 代碼做了些什么以及為什么這樣做 局部變量 難或復(fù)雜的代碼 處理順序8.增強(qiáng)注釋的可讀性 a. 使用完整的語句。 b. 避免使用縮寫。 c. 將整個單詞大寫,以突出它們的重要性。9.請在每個if
15、語句/switch語句/循環(huán)語句的前面加上注釋四、類/接口成員設(shè)計1.設(shè)計類和方法時的原則 創(chuàng)建更加容易調(diào)試和維護(hù)的方法 創(chuàng)建具有強(qiáng)大內(nèi)聚力的類 創(chuàng)建高度專用的方法 創(chuàng)建松散連接的方法 盡量使方法具有獨立性 提高方法的扇入性 降低方法的扇出性2.名稱空間引用 using 聲明一律以.NET基礎(chǔ)框架命名空間、第三方組件命名空間、最后是公司內(nèi)部產(chǎn)品命名空間排序。using System; using System.Collections; using Microsoft.CSharp; using Sirc.Egss.FileExchangeServer;3.成員排列規(guī)則 盡量不要使用類publi
16、c變量,用屬性代替 類成員以internal、private、protected、public排列。public部分按照構(gòu)造函數(shù)、屬性、方法、事件的順序排列。4.每個類文件名應(yīng)盡量保持與內(nèi)部類名一致5.盡量避免手動去修改工具環(huán)境自動生成的代碼6.避免在一個類文件里放置多個類7.一個類文件里應(yīng)該有且僅有一個命名空間,避免在一個類文件里包含多個不同的命名空間8.避免在一個類文件里代碼超過 500 行(除去自動生成的代碼)9.數(shù)據(jù)結(jié)構(gòu)里,應(yīng)該總是更傾向使用C#的范型generic10.盡量縮小變量的作用域11.接口設(shè)計 將接口名去掉 I 前綴后,作為這種默認(rèn)實現(xiàn)類的名稱。比如IComponent的默
17、認(rèn)實現(xiàn)類是Component 每個接口不應(yīng)當(dāng)有超過20個成員的情況,一般應(yīng)保持在12個左右12.方法設(shè)計 創(chuàng)建松散連接和高度專用的方法 創(chuàng)建方法時,設(shè)法將每個方法視為一個黑箱,其他例程不應(yīng)要求了解該方法的內(nèi)部工作情況,該方法也不應(yīng)要求了解它外面的工程情況。這就是為什么你的方法應(yīng)依靠參數(shù)而不應(yīng)依靠全局變量的原因。 a.將復(fù)雜進(jìn)程放入專用方法。 b.將專用方法中可能要修改的代碼隔離。 c.將數(shù)據(jù)輸入/輸出(I/O)放入專用方法。 d.將業(yè)務(wù)規(guī)則封裝在專用方法中。 e.有返回值的方法必須在方法命名里包含對該返回值的信息描述,如GetObjectStat()。 f.局部變量的聲明,應(yīng)盡可能緊靠在它首次
18、被使用的地方 g.一個方法里的代碼避免超過 25 行,最多不能超過 50 行(除去空行、注釋) h.一行代碼最多不要超過 80 個字符 i.避免使用強(qiáng)制轉(zhuǎn)換,推薦使用as操作符進(jìn)行防御性轉(zhuǎn)換 j.當(dāng)需要創(chuàng)建一個長字符串時,推薦使用StringBuilder,而非string k.避免使用不易理解的數(shù)字,用有意義的標(biāo)識來替代(枚舉和常量)13.屬性設(shè)計避免使用返回數(shù)組的屬性。這些屬性會降低程序的效率 不要提供public或protected型的成員變量,而應(yīng)當(dāng)使用屬性替代之 五、數(shù)據(jù)庫設(shè)計規(guī)范數(shù)據(jù)庫名 Pascal Casing命名規(guī)則 以名詞命名,直觀,可讀性強(qiáng)表名 Pascal Casing
19、命名規(guī)則 應(yīng)以完整單詞命名,避免使用縮寫。 數(shù)據(jù)字典以“dic_表名”來命名字段命名 Pascal Casing命名規(guī)則 以表名_字段名進(jìn)行命名存儲過程命名 全部大寫 以UP_表名_操作進(jìn)行命名視圖命名 全部大寫 以VIEW_功能進(jìn)行命名觸發(fā)器命名 全部大寫 以TR_功能進(jìn)行命名主鍵命名 全部大寫 以PK_表名_列名進(jìn)行命名外鍵命名 全部大寫 以FK_從表名_表名_主表名進(jìn)行命名Check約束命名 全部大寫 以CK_表名_列名進(jìn)行命名索引命名 全部大寫 以IDX_表名_列名進(jìn)行命名 1、命名約定Pascal和Camel命名約定編程的命名方式主要有Pascal和Camel兩種(Pascal:每個
20、單詞的首字母大寫,例如ProductType;Camel:首個單詞的首字母小寫,其余單詞的首字母大寫,例如productType)以下是一些常用的C#成員及其推薦命名方法: 標(biāo)志符規(guī)則實例與描述類classPascalApplication枚舉類型enumPascal記住,是以Pascal命名,切勿包含Enum,否則FXCop會拋出Issue委托delegatePascal以Pascal命名,不以任何特殊字符串區(qū)別于類名、函數(shù)名常量const全部大寫全部大寫,單詞間以下劃線隔開接口interfacePascalIDisposable 注:總是以 I 前綴開始,后接Pascal命名方法funct
21、ionPascalToString命名空間namespacePascal以.分隔,當(dāng)每一個限定詞均為Pascal命名方式,比如:using ExcelQuicker.Framework參數(shù)Camel首字母小寫局部變量Camel也可以加入類型標(biāo)識符,比如對于System.String類型,聲明變量是以str開頭,string strSQL = string.Empty;數(shù)據(jù)成員Camel以m開頭Pascal命名規(guī)則,如mProductType(m意味member)屬性Pascal1.1、局部變量命名在primitive的局部變量命名時,使用Camel命名規(guī)則,比如:int type = 0;do
22、uble count = 0;對于string類型定義,通常使用str前綴Pascal命名的方式,比如string strSql = ; /這是一種典型的命名SQL語句字符串的方式。而對于此外的類型對象定義,通常的做法是使用obj前綴Pascal命名的方式,來告知我們這個變量是一個對象。或者也可以直接使用類名的Camel命名規(guī)則。比如:Application objApplication = new Application();Application application = new Application();1.2、參數(shù)命名Camel命名規(guī)則,首字母小寫1.3、類數(shù)據(jù)成員/屬性命名數(shù)據(jù)成
23、員命名以Camel命名方式,而屬性以Pascal命名。通常如果數(shù)據(jù)成員與屬性成對的話,數(shù)據(jù)成員與屬性的命名區(qū)別僅在于變量名的第一個字母是小寫還是大寫。比如class Appcalitionprivate ArrayList worksheetCollection = new ArrayList();public ArrayList WorksheetCollectiongetreturn this.worksheetCollection;另外,類的成員數(shù)據(jù)/方法調(diào)用時,應(yīng)該加上this限定符,this在編輯環(huán)境中是藍(lán)色的,更利于我們區(qū)分局部變量、參數(shù)或靜態(tài)變量,并且利于FXCop檢測區(qū)分。(如
24、果使用FxCop掃描和檢測代碼的話)1.4、命名空間命名在dot之間的各限定字符串符合Pascal格式1.5、委托縮寫委托的命名方式我常常以Pascal命名,并且在命名的后面加EventHandler比如public delegate void MouseEventHandler (object sender, MouseEventArgs e); /用于處理與鼠標(biāo)相關(guān)的事件或委托對于自定義的委托,其參數(shù)第一個建議仍然使用object sender,sender代表觸發(fā)這個時間或委托的源對象。而第二個參數(shù)繼承于EventArgs類,并且在派生類中實現(xiàn)自己的業(yè)務(wù)邏輯。1.6、自定義異常類自定義異
25、常類以Exception結(jié)尾,并且在類名中能清楚的描述出該異常的原因。比如NotFoundFileException,描述出了某個實體(文件、內(nèi)存區(qū)域等)無法被找到。1.7、枚舉枚舉的命名是Pascal命名,不需要在枚舉中加入Enum,枚舉的名稱能清楚的表明該枚舉的用途。1.8、常量命名全部大寫,單詞間并且以下劃線間隔,如public const int LOCK_SECONDS = 3000; 雖然在MSDN中常量的命名推薦使用Pascal,但是從C+沿襲的命名規(guī)則來看,將常量全部大寫更加能清楚的表示常量與普通變量之間的區(qū)別。1.9、命名縮寫在一般情況下,不推薦縮寫命名,不要擔(dān)心變量命名長,
26、長的變量名能使變量的意義更加清晰,其實從長變量名的負(fù)面作用三,因為Ctrl+C和Ctrl+V加上在VS中的智能感知,其負(fù)面追用已經(jīng)很小。變量命名的原則是,盡最大努力讓其他人在看到我們的變量/函數(shù)/等的第一時間,大概能猜出它是做什么的。比如:int productTypeCount = 0; /我們在第一時間就能知道它是記錄產(chǎn)品的數(shù)量的變量而對于糟糕的命名方式:int prodTypeCount = 0; /它是productTypeCount的簡寫,我們一部分人也許知道prod是product的縮寫,但是每人能保證所有的人都知道它。我個人認(rèn)為:最優(yōu)秀的代碼它本身就是注釋。作為一流的程序員。并不
27、僅僅實現(xiàn)功能,而是要讓我們的代碼更加優(yōu)美,具備讓他人維護(hù)或今后擴(kuò)充的能力。作為現(xiàn)在的業(yè)務(wù)系統(tǒng),其門檻的準(zhǔn)入水平已大大降低,實現(xiàn)功能上的需求已沒有什么難度,但是高手和菜鳥的區(qū)別在于,高手的代碼通俗易懂,在整個編碼的過程中,不僅能考慮到性能、還會考慮代碼可讀性和維護(hù)性。1.10、數(shù)據(jù)庫命名數(shù)據(jù)庫的字段、表名的命名都推薦采用Pascal命名方式,盡量不采用縮寫。當(dāng)然,使用長的字段名、表名,可能會使SQL語句的編寫帶來負(fù)面影響。我推薦大家可以使用一些ORM,ORM的性能肯定不會比直接寫SQL的好,但是如果做業(yè)務(wù)系統(tǒng),更重要的是系統(tǒng)多久能交付用戶使用,ORM不僅使開發(fā)時間可以縮短不少,并且在后期的維護(hù)上
28、也比直接寫SQL便利很多。2、注釋規(guī)范2.1、文件頭部注釋在代碼文件的頭部進(jìn)行注釋,這樣做的好處在于,我們能對代碼文件做變更跟蹤。在代碼頭部分標(biāo)注出創(chuàng)始人、創(chuàng)始時間、修改人、修改時間、代碼的功能,這在團(tuán)隊開發(fā)中必不可少,它們可以使后來維護(hù)/修改的同伴在遇到問題時,在第一時間知道他應(yīng)該向誰去尋求幫助,并且知道這個文件經(jīng)歷了多少次迭代、經(jīng)歷了多少個程序員的開發(fā)和修改。樣本:/* 作者: Eunge* 創(chuàng)始時間:2004-6-8* 修改人:Lucy* 修改時間:2004-12-9* 修改人:Lucy* 修改時間:2005-01-29* 描述:* 主要用于產(chǎn)品信息的資料錄入,*/2.2、函數(shù)、屬性、類
29、等注釋請使用/三斜線注釋,這種注釋是基于XML的,不僅能導(dǎo)出XML制作幫助文檔,而且在各個函數(shù)、屬性、類等的使用中,編輯環(huán)境會自動帶出注釋,方便你的開發(fā)。以protected,protected Internal,public聲明的定義注釋都建議以這樣命名方法。例如:/ / 用于從ERP系統(tǒng)中撈出產(chǎn)品信息的類/ class ProductTypeCollector2.3、邏輯點注釋在我們認(rèn)為邏輯性較強(qiáng)的地方加入注釋,說明這段程序的邏輯是怎樣的,以方便我們自己后來的理解以及其他人的理解,并且這樣還可以在一定程度上排除BUG。在注釋中寫明我們的邏輯思想,對照程序,判斷程序是否符合我們的初衷,如果不
30、是,則我們應(yīng)該仔細(xì)思考耀修改的是注釋還是程序了3、排版我的排版原則與建議:1、 每行語句至少占一行,如果語句過長(超過一屏),則該語句斷為兩行顯示;2、 把相似的內(nèi)容放在一起,比如數(shù)據(jù)成員、屬性、方法、事件等,并適當(dāng)?shù)氖褂?region#endregion,我最喜歡把機(jī)器生成的代碼都放在一個#region里面,比如在編寫ASP.NET程序時,對應(yīng)自動產(chǎn)生的控件定義,我常用#region Automatic Generated Web Components #endregion把他們框住3、 使用空格,(1) 雙目操作符的前后加空格(+, =, & 等),index = index + 1;(2
31、) 單目操作符前加空格(!, +, 等), index +;(3) 逗號、分號只在后面加空格4、 使用空行,在一段功能代碼、或者函數(shù)、屬性之間插入空行,這樣會很直觀。在Visual Studio 2005中,其實已經(jīng)帶有代碼格式化這樣的功能,快捷鍵是Ctrl+K - Ctrl+D。4、界面控件命名我的建議是使用默認(rèn)控件名作為前綴,前綴名稱全部小寫,這樣的好處是不必為未知的控件統(tǒng)一命名方式發(fā)愁,比如對于Label標(biāo)簽控件,有的人用縮寫lbl,有的人用lab,有的人用lb。這樣其實仍然是避免使用縮寫,有的時候仍然會使命名變得冗長,但是命名更加能反應(yīng)出變量的意義,并且各個開發(fā)人員也能更好的執(zhí)行,因為
32、他們不需要去背記各個變量的縮寫。protected System.Web.UI.WebControls.Button buttonQuery;protected System.Web.UI.WebControls.DropDownList dropdownlistProductType;protected System.Web.UI.WebControls.TextBox textboxManufactureDate;5、代碼可讀性一些建議(1)注意運(yùn)算符的優(yōu)先級,我們應(yīng)該盡量使用括號明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級,給我們以及維護(hù)人帶來困擾(2)避免使用不易理解的數(shù)字,用有意義的標(biāo)識
33、來替代(枚舉和常量)比如:if(productType = 0)else if (productType = 1)(不推薦使用)if(productType = ProductType.CD)else if (productType = ProductType.DVD)(推薦使用)(3)在界面層中盡量使用異常處理try語句,不要將系統(tǒng)級別的錯誤直接暴露給用戶,而更應(yīng)該的是把系統(tǒng)拋出的錯誤信息記錄到LOG日志文件中去,告訴用戶友好的提示信息在Visual Studio 2005里面,有代碼布局格式化功能,蠻有用的。其實代碼的規(guī)范是為了使系統(tǒng)具有整體一致的編碼風(fēng)格,以使后期維護(hù)人員能更快的讀懂代碼
34、并進(jìn)行維護(hù)。我認(rèn)為代碼規(guī)范有其必要性,但不能因為規(guī)范而規(guī)范,從開發(fā)而言,開發(fā)是為了更快的做出穩(wěn)定的系統(tǒng),而穩(wěn)定的系統(tǒng)是為了給公司帶來受益。開發(fā)人員、項目管理人員都應(yīng)該更多的從項目經(jīng)營的角度出來,同時站在公司、客戶的角度考慮問題,而不是因為代碼而代碼。.NET 程序的命名規(guī)則(選自msdn)一致的命名模式是托管類庫中可預(yù)知性與可發(fā)現(xiàn)性最重要的元素之一。對這些命名指南廣泛的使用和理解將消除許多最常見的用戶問題。本主題提供.NET Framework 類型的命名指南。對于每個類型,還應(yīng)該注意關(guān)于大寫樣式、區(qū)分大小寫和措詞的一些通用規(guī)則。1. 本節(jié)內(nèi)容大寫樣式 描述用于在類庫中命名標(biāo)識符的 Pasca
35、l 大小寫、Camel 大小寫和全部大寫樣式。區(qū)分大小寫描述在類庫中命名標(biāo)識符時所遵循的區(qū)分大小寫指南??s寫描述在類型名稱中使用縮寫的指南。措詞列出類型名稱中要避免使用的關(guān)鍵字。避免類型名稱混淆描述如何避免使用語言特定的術(shù)語以避免類型名稱混淆。命名空間命名指南描述命名空間時要遵循的指南。類命名指南描述命名類時要遵守的指南。接口命名指南描述命名接口時要遵循的指南。屬性命名指南 描述使用Attribute 后綴命名屬性的正確方式。枚舉類型命名指南 描述命名枚舉時要遵守的指南。靜態(tài)字段命名指南描述命名靜態(tài)字段時要遵守的指南。參數(shù)命名指南描述命名參數(shù)時要遵守的指南。方法命名指南描述命名方法時要遵守的指
36、南。屬性命名指南描述命名屬性時要遵守的指南。事件命名指南描述命名事件時要遵守的指南。一:大寫樣式使用下面的三種大寫標(biāo)識符約定。Pascal 大小寫將標(biāo)識符的首字母和后面連接的每個單詞的首字母都大寫??梢詫θ址蚋嘧址臉?biāo)識符使用 Pascal 大小寫。例如:BackColorCamel 大小寫標(biāo)識符的首字母小寫,而每個后面連接的單詞的首字母都大寫。例如:backColor大寫標(biāo)識符中的所有字母都大寫。僅對于由兩個或者更少字母組成的標(biāo)識符使用該約定。例如:System.IOSystem.Web.UI可能還必須大寫標(biāo)識符以維持與現(xiàn)有非托管符號方案的兼容性,在該方案中所有大寫字母經(jīng)常用于枚舉和常
37、數(shù)值。一般情況下,在使用它們的程序集之外這些字符應(yīng)當(dāng)是不可見的。下表匯總了大寫規(guī)則,并提供了不同類型的標(biāo)識符的示例。標(biāo)識符大小寫方式示例類PascalAppDomain枚舉類型PascalErrorLevel枚舉值PascalFatalError事件PascalValueChange異常類PascalWebException注意 總是以Exception后綴結(jié)尾。只讀的靜態(tài)字段PascalRedValue接口PascalIDisposable注意 總是以I前綴開始。方法PascalToString命名空間PascalSystem.Drawing參數(shù)CameltypeName屬性PascalBa
38、ckColor受保護(hù)的實例字段CamelredValue注意 很少使用。屬性優(yōu)于使用受保護(hù)的實例字段。公共實例字段PascalRedValue注意 很少使用。屬性優(yōu)于使用公共實例字段。二:區(qū)分大小寫為了避免混淆和保證跨語言交互操作,請遵循有關(guān)區(qū)分大小寫的使用的下列規(guī)則: 不要使用要求區(qū)分大小寫的名稱。對于區(qū)分大小寫和不區(qū)分大小寫的語言,組件都必須完全可以使用。不區(qū)分大小寫的語言無法區(qū)分同一上下文中僅大小寫不同的兩個名稱。因此,在創(chuàng)建的組件或類中必須避免這種情況。 不要創(chuàng)建僅是名稱大小寫有區(qū)別的兩個命名空間。例如,不區(qū)分大小寫的語言無法區(qū)分以下兩個命名空間聲明。 namespace ee.cum
39、mings;namespace Ee.Cummings; 不要創(chuàng)建具有僅是大小寫有區(qū)別的參數(shù)名稱的函數(shù)。下面的示例是不正確的。void MyFunction(string a, string A) 不要創(chuàng)建具有僅是大小寫有區(qū)別的類型名稱的命名空間。在下面的示例中,Point p和POINT p是不適當(dāng)?shù)念愋兔Q,原因是它們僅在大小寫方面有區(qū)別。 System.Windows.Forms.Point pSystem.Windows.Forms.POINT p 不要創(chuàng)建具有僅是大小寫有區(qū)別的屬性名稱的類型。在下面的示例中,int Color和int COLOR是不適當(dāng)?shù)膶傩悦Q,原因是它們僅在大小
40、寫方面有區(qū)別。 int Color get, setint COLOR get, set 不要創(chuàng)建具有僅是大小寫有區(qū)別的方法名稱的類型。在下面的示例中,calculate 和Calculate 是不適當(dāng)?shù)姆椒Q,原因是它們僅在大小寫方面有區(qū)別。 void calculate()void Calculate()三:縮寫為了避免混淆和保證跨語言交互操作,請遵循有關(guān)區(qū)縮寫的使用的下列規(guī)則: 不要將縮寫或縮略形式用作標(biāo)識符名稱的組成部分。例如,使用GetWindow,而不要使用GetWin。 不要使用計算機(jī)領(lǐng)域中未被普遍接受的縮寫。 在適當(dāng)?shù)臅r候,使用眾所周知的縮寫替換冗長的詞組名稱。例如,用UI作
41、為User Interface 的縮寫,用OLAP作為On-line Analytical Processing 的縮寫。 在使用縮寫時,對于超過兩個字符長度的縮寫,請使用 Pascal 大小寫或Camel 大小寫。例如,使用 HtmlButton 或 htmlButton。但是,應(yīng)當(dāng)大寫僅有兩個字符的縮寫,如,System.IO,而不是System.Io。 不要在標(biāo)識符或參數(shù)名稱中使用縮寫。如果必須使用縮寫,對于由多于兩個字符所組成的縮寫請使用Camel 大小寫,雖然這和單詞的標(biāo)準(zhǔn)縮寫相沖突。 四:措詞避免使用與常用的.NET Framework 命名空間重復(fù)的類名稱。例如,不要將以下任何名
42、稱用作類名稱:System、Collections、Forms或UI。有關(guān).NET Framework 命名空間的列表,請參見類庫。另外,避免使用和以下關(guān)鍵字沖突的標(biāo)識符。AddHandlerAddressOfAliasAndAnsiAsAssemblyAutoBaseBooleanByRefByteByValCallCaseCatchCBoolCByteCCharCDateCDecCDblCharCIntClassCLngCObjConstCShortCSngCStrCTypeDateDecimalDeclareDefaultDelegateDimDoDoubleEachElseElseIf
43、EndEnumEraseErrorEventExitExternalSourceFalseFinalizeFinally FloatForFriendFunctionGetGetTypeGotoHandlesIfImplementsImportsInInheritsIntegerInterfaceIsLetLibLikeLongLoopMeModModuleMustInheritMustOverrideMyBaseMyClassNamespaceNewNextNotNothingNotInheritableNotOverridableObjectOnOptionOptionalOrOverlo
44、adsOverridableOverridesParamArrayPreservePrivatePropertyProtectedPublicRaiseEventReadOnlyReDimRegionREMRemoveHandlerResumeReturnSelectSetShadowsSharedShortSingleStaticStepStopStringStructureSubSyncLockThenThrowToTrueTryTypeOfUnicodeUntilvolatileWhenWhileWithWithEventsWriteOnlyXorevalextendsinstanceo
45、fpackagevar五:避免類型名稱混淆不同的編程語言使用不同的術(shù)語標(biāo)識基本托管類型。類庫設(shè)計人員必須避免使用語言特定的術(shù)語。請遵循本節(jié)中描述的規(guī)則以避免類型名稱混淆。使用描述類型的含義的名稱,而不是描述類型的名稱。如果參數(shù)除了其類型之外沒有任何語義含義,那么在這種罕見的情況下請使用一般性名稱。例如,支持將各種數(shù)據(jù)類型寫入到流中的類可以有以下方法。Visual BasicSub Write(value As Double);Sub Write(value As Single);Sub Write(value As Long);Sub Write(value As Integer);Sub W
46、rite(value As Short);C#void Write(double value);void Write(float value);void Write(long value);void Write(int value);void Write(short value);不要創(chuàng)建語言特定的方法名稱,如下面的示例所示。Visual BasicSub Write(doubleValue As Double);Sub Write(singleValue As Single);Sub Write(longValue As Long);Sub Write(integerValue As Int
47、eger);Sub Write(shortValue As Short);C#void Write(double doubleValue);void Write(float floatValue);void Write(long longValue);void Write(int intValue);void Write(short shortValue);如果有必要為每個基本數(shù)據(jù)類型創(chuàng)建唯一命名的方法,那么在這種極為罕見的情況下請使用通用類型名稱。下表列出基本數(shù)據(jù)類型名稱和它們的通用替換。C# 類型名稱Visual Basic 類型名稱JScript 類型名稱Visual C+ 類型名稱Il
48、asm.exe表示形式通用類型名稱sbyteSBytesBytecharint8SBytebyteBytebyteunsigned charunsigned int8ByteshortShortshortshortint16Int16ushortUInt16ushortunsigned shortunsigned int16UInt16intIntegerintintint32Int32uintUInt32uintunsigned intunsigned int32UInt32longLonglong_int64int64Int64ulongUInt64ulongunsigned _int64
49、unsigned int64UInt64floatSinglefloatfloatfloat32SingledoubleDoubledoubledoublefloat64DoubleboolBooleanbooleanboolboolBooleancharCharcharwchar_tcharCharstringStringstringStringstringStringobjectObjectobjectObjectobjectObject例如,支持將從流讀取各種數(shù)據(jù)類型的類可以有以下方法。Visual BasicReadDouble()As DoubleReadSingle()As Sin
50、gleReadInt64()As LongReadInt32()As IntegerReadInt16()As ShortC#double ReadDouble();float ReadSingle();long ReadInt64();int ReadInt32();short ReadInt16();上面的示例優(yōu)先于下面的語言特定的替代方法。Visual BasicReadDouble()As DoubleReadSingle()As SingleReadLong()As LongReadInteger()As IntegerReadShort()As ShortC#double ReadDouble();float ReadFloat();long ReadLong();int ReadInt();short ReadShort();六:命名空間命名指南命名命名空間時的一般性規(guī)則是使用公司名稱,后跟技術(shù)名稱和可選的功能與設(shè)計,如下所示。CompanyName
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 法學(xué)概論考試的整體規(guī)劃與試題及答案
- 2025屆新疆烏魯木齊仟葉學(xué)校七下數(shù)學(xué)期末達(dá)標(biāo)檢測模擬試題含解析
- 計算機(jī)二級VB考試知名試題及答案
- 財務(wù)業(yè)務(wù)工作目標(biāo)規(guī)劃計劃
- 軟件水平考試經(jīng)典試題及答案解析
- 2024年西安碑林區(qū)友誼小學(xué)招聘筆試真題
- 2024年溫州榕園學(xué)校引進(jìn)教育人才筆試真題
- 2024年海南省農(nóng)業(yè)農(nóng)村廳下屬事業(yè)單位真題
- 2024年秦皇島事業(yè)單位招聘筆試真題
- 2024年甘肅省應(yīng)急管理廳下屬事業(yè)單位真題
- 醫(yī)療器械勞動合同范本
- 數(shù)字華容道-1課時
- 2024-2029年中國醇類燃料行業(yè)深度調(diào)研及投資前景預(yù)測研究報告
- 相約勞動智慧樹知到期末考試答案章節(jié)答案2024年陜西鐵路工程職業(yè)技術(shù)學(xué)院
- MOOC 人工智能:模型與算法-浙江大學(xué) 中國大學(xué)慕課答案
- 奇異的仿生學(xué)智慧樹知到期末考試答案2024年
- 2024年國家義務(wù)教育質(zhì)量監(jiān)測心理健康和德育考試試題及答案
- 24春國家開放大學(xué)《農(nóng)業(yè)推廣》調(diào)查報告參考答案
- 企業(yè)借款申請書(2篇)
- 新生兒更換尿不濕的課件
- 2024屆廣東省惠州市高三上學(xué)期第一次調(diào)研考試數(shù)學(xué)試題
評論
0/150
提交評論