非常好的C#.NET-編程規(guī)范_第1頁
非常好的C#.NET-編程規(guī)范_第2頁
非常好的C#.NET-編程規(guī)范_第3頁
非常好的C#.NET-編程規(guī)范_第4頁
非常好的C#.NET-編程規(guī)范_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

C#.NET編程規(guī)范 2 2 2.3注釋(Comment)規(guī)范 142.3.1模塊(類)注釋規(guī)范 14 1編寫目的統(tǒng)一性而2.1代碼格式令在代碼中垂直對(duì)齊左括號(hào)和右括號(hào)。{}if(x==0){}2令為了防止在閱讀代碼時(shí)不得不滾動(dòng)源代碼編輯器,每行代碼或者注釋在1024*800的顯示頻率下不得超過一顯示屏示沒有后面的行是不完整的。令每一行上放置的語句避免超過一條。令在大多數(shù)運(yùn)算符之前和之后使用空格,這樣做時(shí)不會(huì)改變代碼的意圖卻可以使代碼intj=i+k;而不應(yīng)寫為intj=i+k;令將大的復(fù)雜代碼節(jié)分為較小的、易于理解的模塊。2.2命名指南使用下面的三種大寫標(biāo)識(shí)符約定。Pascal大小寫將標(biāo)識(shí)符的首字母和后面連接的每一個(gè)單詞的首字母都大寫??梢詫?duì)三字符或者更多字Camel大小寫標(biāo)識(shí)符的首字母小寫,而每一個(gè)后面連接的單詞的首字母都大寫。例如:標(biāo)識(shí)符中的所有字母都大寫。僅對(duì)于由兩個(gè)或者更少字母組成的標(biāo)識(shí)符使用該約System.IOSystem.Web.UI可能還必須大寫標(biāo)識(shí)符以維持與現(xiàn)有非托管符號(hào)方案的兼容性,在該方案中所有大3下表匯總了大寫規(guī)則,并提供了不同類型的標(biāo)識(shí)符的示例。大小寫標(biāo)識(shí)符大小寫類枚舉類型類枚舉類型枚舉值件異常類PascalPascalPascalPascal只讀的靜態(tài)字段接口法命名空間數(shù)性PascalPascalPascalPascalCamelPascal受保護(hù)的實(shí)例字Camel段公共實(shí)例字段PascalAppDomainErrorLevelFatalErrorValueChange注意總是以Exception后綴結(jié)尾。RedValue注意總是以I前綴開始。ToStringSystem.DrawingtypeNameBackColoredValue注意很少使用。屬性優(yōu)于使用受保護(hù)的實(shí)例字段。RedValue注意很少使用。屬性優(yōu)于使用公共實(shí)例字段。為了避免混淆和保證跨語言交互操作,請(qǐng)遵循有關(guān)區(qū)分大小寫的使用的下列規(guī)則:必須徹底可以使用。不區(qū)分大小寫的語言無法區(qū)分同一上下文中僅大小寫不同的兩個(gè)名稱。因此,在創(chuàng)建的組件或者類中必須避免這種情況。言無法區(qū)分以下兩個(gè)命名空間聲明。令不要?jiǎng)?chuàng)建具有僅是大小寫有區(qū)別的參數(shù)名稱的函數(shù)。下面的示例是不正確的。和POINTp是不適當(dāng)?shù)念愋兔Q,原因是它們僅是大小寫有區(qū)別。4intCOLOR是不適當(dāng)?shù)膶傩悦Q,原因是它們僅是大小寫有區(qū)別。t令不要?jiǎng)?chuàng)建具有僅是大小寫有區(qū)別的方法名稱的類型。在下面的示例中,calculate和Calculate是不適當(dāng)?shù)姆椒Q,原因是它們僅是大小寫有區(qū)別。為了避免混淆和保證跨語言交互操作,請(qǐng)遵循有關(guān)區(qū)縮寫的使用的下列規(guī)則:令不要將縮寫或者縮略形式用作標(biāo)識(shí)符名稱的組成部份。例如,使用GetWindow,而不要使用GetWin。令不要使用計(jì)算機(jī)領(lǐng)域中未被普遍接受的縮寫。Interface的縮寫,用OLAP作為On-lineAnalyticalProcessing的縮寫。令在使用縮寫時(shí),對(duì)于超過兩個(gè)字符長度的縮寫請(qǐng)使用Pascal大小寫或者Camel大小寫。例如,使用HtmlButton或者HTMLButton。但是,應(yīng)當(dāng)大寫僅有兩個(gè)字符的組成的縮寫請(qǐng)使用Camel大小寫,雖然這和單詞的標(biāo)準(zhǔn)縮寫相沖突。NET框架命名空間重復(fù)的類名稱。例如,不要將以AddHandlerAddressOfAliasAndAnsi5AsAssemblyAutoBaseBooleanByRefByteByValCallCaseCatchCBoolCByteCCharCDateCDecCDblCharCIntClassCLngCObjConstCShortCSngCStrCTypeDateDecimalDeclareDefaultDelegateDimDoDoubleEachElseElseIfEndEnumEraseErrorEventExitExternalSourceFalseFinalizeFinallyFloatForFriendFunctionGetGetTypeGotoHandlesImplementsseritsrInterfaceLetLibLikeLongLoopMeModModuleMustInheritMustOverrideMyBaseMyClassNamespaceNewNextNotNothingNotInheritableNotOverridableObjectOptionOptionalOverloadsOverridableOverridesParamArrayPreservePrivatePropertyProtectedPublicRaiseEventReadOnlyReDimRegionREMRemoveHandlerResumeReturnSelectShadowsSharedShortSingleStaticteptopStringStructureSyncLockThenThrowoTrueTryTypeOfUnicodeUntilvolatileWhenWhileWithWithEventsWriteOnlyXorextendsinstanceofpackagear2.2.5避免類型名稱混淆不同的編程語言使用不同的術(shù)語標(biāo)識(shí)基本托管類型。類庫設(shè)計(jì)人員必須避免使用語言特定的術(shù)語。請(qǐng)遵循本節(jié)中描述的規(guī)則以避免類型名稱混淆。6到流中的類可以有以下方法。不要?jiǎng)?chuàng)建語言特定的方法名稱,如下面的示例所示。如果有必要為每一個(gè)基本數(shù)據(jù)類型創(chuàng)建惟一命名的方法,那末在這種極其罕見的情況下請(qǐng)使用通用類型名稱。下表列出基本數(shù)據(jù)類型名稱和它們的通用替換。C#類型名稱byteushortuintulongloatdoubleboolgobjectVisualBasic類型名稱SByteByteShortUInt16rUInt32LongUInt64SingleDoubleBooleanCharStringObjectJScript類型byteushortuintulongloatdoublebooleangobjectVisualC++類Ilasm.exe表示形型名稱式charint8unsignedcharunsignedint8unsignedunsigned__int64unsigned__int64loatdoubleboolwchar_tStringObjectunsignedint16intunsignedint32unsignedint64float32float64boolgobject通用類型名稱SByteByteUInt16UInt32UInt64SingleDoubleBooleanCharStringObject7CompanyName.TechnologyName[.Feature][.Design]Microsoft.MediaMicrosoft.Media.Design給命名空間名稱加之公司名稱或者其他知名商標(biāo)的前綴可以避免兩個(gè)已經(jīng)發(fā)布的命名AutomationClasses的一個(gè)適當(dāng)?shù)那熬Y。架構(gòu)的基礎(chǔ)。命名一個(gè)命名空間,該命名空間包含為具有.Design后綴的基命名空間提供設(shè)計(jì)時(shí)功能的類型。例如,System.Windows.Forms.Design命名空間包含用于設(shè)計(jì)基于System.Windows.Forms的應(yīng)用程序的設(shè)計(jì)器和相關(guān)的類。類不依賴于System.UI.Design中的類。Microsoft.Office.PowerPoint中所示。如果您的商標(biāo)使用非傳統(tǒng)的大小寫,請(qǐng)遵循您的商N(yùn)eXT.WebObjects和ee.cummings闡釋了對(duì)于Pascal大小寫規(guī)則的適當(dāng)背離。如果在語義上適當(dāng),使用復(fù)數(shù)命名空間名稱。例如,使用System.Collections而不是System.Collection。此規(guī)則的例外是商標(biāo)名稱和縮寫。例如,使用System.IO而不是System.IOs。最后,請(qǐng)注意命名空間名稱不必非得與程序集名稱相似。例如,如果命名程序集MyCompany.MyTechnology.dll,它沒有必要非得包含MyCompany.MyTechnology命名空間。82.2.7類命名指南令使用名詞或者名詞短語命名類。令使用Pascal大小寫。令少用縮寫。令不要使用類型前綴,如在類名稱上對(duì)類使用C前綴。例如,使用類名稱FileStream,而不是CFileStream。令不要使用下劃線字符(_)。類名稱組成部份的整個(gè)單詞的第一個(gè)字母,這便是適當(dāng)?shù)?。例如,類名稱IdentityStore是適當(dāng)?shù)??;惖拿Q。例如,ApplicationException對(duì)于從名為Exception的類派生的類是適當(dāng)?shù)拿Q,原因是ApplicationException是一種Exception。請(qǐng)?jiān)趹?yīng)用該規(guī)則時(shí)進(jìn)行合理的判斷。例如,Button對(duì)于從Control派生的類是適當(dāng)?shù)拿Q。盡管按鈕是一種控件,但是將Control作為類名稱的一部份將使名稱不必要地加長。下面是正確命名的類的示例。publicclassFileStreampublicclassButtonpublicclassString2.2.8類成員變量命名指南9令用名詞或者名詞短語,或者描述行為的形容詞命名接口。例如,接口名稱IComponent使用描述性名詞。接口名稱ICustomAttributeProvider使用名詞短語。名稱IPersistable使用形容詞。令使用Pascal大小寫。令少用縮寫。令給接口名稱加之字母I前綴,以指示該類型為接口。令在定義類/接口對(duì)(其中類是接口的標(biāo)準(zhǔn)實(shí)現(xiàn))時(shí)使用相似的名稱。兩個(gè)名稱的區(qū)別應(yīng)該只是接口名稱上有字母I前綴。令不要使用下劃線字符(_)。以下是正確命名的接口的示例。publicinterfaceIServiceProviderpublicinterfaceIFormatable以下代碼示例闡釋如何定義IComponent接口及其標(biāo)準(zhǔn)實(shí)現(xiàn)Component類。publicinterfaceIComponent{}publicclassComponent:IComponent{//Implementationcodegoeshere.}應(yīng)該總是將后綴Attribute添加到自定義屬性類。以下是正確命名的屬性類的示例。2.2.11枚舉類型命名指南枚舉(Enum)值類型從Enum類繼承。以下規(guī)則概述枚舉的命名指南:令對(duì)于Enum類型和值名稱使用Pascal大小寫。令少用縮寫。令不要在Enum類型名稱上使用Enum后綴。令對(duì)大多數(shù)Enum類型使用單數(shù)名稱,但是對(duì)作為位域的Enum類型使用復(fù)數(shù)名令總是將FlagsAttribute添加到位域Enum類型。指南:令使用名詞、名詞短語或者名詞的縮寫命名靜態(tài)字段。令使用Pascal大小寫。令對(duì)靜態(tài)字段名稱使用匈牙利語表示法前綴。令建議盡可能使用靜態(tài)屬性而不是公共靜態(tài)字段。類型可用于在大多數(shù)情況下確定它的含義。令對(duì)參數(shù)名稱使用Camel大小寫。參數(shù)的名稱。少用基于類型的參數(shù)名稱,僅在適合使用它們的地方使用它們。令不要給參數(shù)名稱加匈牙利語類型表示法的前綴。以下是正確命名的參數(shù)的示例。第11頁令使用動(dòng)詞或者動(dòng)詞短語命名方法。令使用Pascal大小寫。以下是正確命名的方法的實(shí)例。RemoveAll()GetCharArray()nvoke令使用名詞或者名詞短語命名屬性。令使用Pascal大小寫。令不要使用匈牙利語表示法。屬性,則屬性的類型同樣應(yīng)該是Color。請(qǐng)參閱本主題中后面的示例。以下代碼示例闡釋正確的屬性命名。publicclassSampleClass{ColorBackColor{//CodeforGetandSetaccessorsgoeshere.}}以下代碼示例闡釋提供其名稱與類型相同的屬性。publicenumColor{//InsertcodeforEnumhere.}publicclassControl{publicColorColor{ertcode}}here.}here.}以下代碼示例不正確,原因是ColorpublicenumColor/InsertcodeblicclassControl{publicintColor屬性是Integer類型的。forEnumhere.}{rt}}codehere.}codehere.}在不正確的示例中,不可能引用Color枚舉的成員。Color.Xxx將被解釋為訪問一個(gè)類型)的值,然后再訪問該值的某個(gè)成員(該成員必須是System.Int32的實(shí)例成員)。令對(duì)事件處理程序名稱使用EventHandler后綴。令指定兩個(gè)名為sender和e的參數(shù)。sender參數(shù)表示引起事件的對(duì)象。sender參數(shù)始終是object類型的,即使在可以使用更為特定的類型時(shí)也如用適當(dāng)而特定的事件類。令用EventArgs后綴命名事件參數(shù)類。令考慮用動(dòng)詞命名事件。令使用動(dòng)名詞(動(dòng)詞的“ing”形式)創(chuàng)建表示事件前的概念的事件名稱,用過去式表示事件后。例如,可以取銷的Close事件應(yīng)當(dāng)具有Closing事件和Closed事件。不要使用BeforeXxx/AfterXxx命名模式。OnClose。方法(稱為OnXxx)。此方法只應(yīng)具有事件參數(shù)e,因?yàn)榘l(fā)送方總是類型的實(shí)以下示例闡釋具有適當(dāng)名稱和參數(shù)的事件處理程序。以下示例闡釋正確命名的事件參數(shù)類。publicclassMouseEventArgsEventArgs{publicMouseEventArgsintx,inty)publicintX{get{returnx;}}publicintY{get{returny;}}}2.3注釋(Comment)規(guī)范注釋規(guī)范包括:模塊(類)注釋規(guī)范、類的屬性、方法注釋規(guī)范、代碼2.3.1模塊(類)注釋規(guī)范ary中文名maryary者中文名mary2.3.2類屬性注釋規(guī)范<summary>///</summary>2.3.3方法注釋規(guī)范式編寫注釋<summary>/summary><paramname="<參數(shù)名稱>"><參數(shù)說明></param><returns>對(duì)方法返回值的說明,該說明必須明確說明返回的值代表什么含義>eturns2.3.4代碼間注釋規(guī)范>代碼中遇到語句塊時(shí)必須添加注釋(if,for,foreach,??),添加的注釋必須能夠說明此語句塊的作用和實(shí)現(xiàn)手段(所用算法等等)。作為一個(gè)軟件開辟者,在你的所有品中含有一份有關(guān)標(biāo)準(zhǔn)的文檔并不會(huì)自動(dòng)地使你更加地有效率。要成功,你必須選擇變得更有效率,這意味著你必須將這些標(biāo)準(zhǔn)有3.1有效地使用這些標(biāo)準(zhǔn)以下的建議將匡助你更有效地使用本文所描述的C#編程標(biāo)準(zhǔn)和指南:1.理解標(biāo)準(zhǔn)?;ㄐr(shí)間去理解為什么每一個(gè)標(biāo)準(zhǔn)和指南會(huì)使開辟效率提高。比如說,不要僅僅是因?yàn)橹改现幸竽悴旁谝恍袃H聲明一個(gè)局部變量,而應(yīng)該是因?yàn)槟忝靼姿苁鼓愕拇a更易懂你才這樣做。遵守標(biāo)準(zhǔn)不應(yīng)僅僅是當(dāng)你有時(shí)間才做的事,而你應(yīng)該向來遵守,因?yàn)槟阆嘈胚@是最好的程序設(shè)計(jì)方法。3.當(dāng)你寫代碼時(shí)就應(yīng)該遵守標(biāo)準(zhǔn),而不應(yīng)是一個(gè)事后的想法。加了注釋的代碼不僅在你寫程序時(shí),而且在你寫完程序時(shí),都更容易理解。在程序開辟階段和維護(hù)階段,一致性地命名成員函數(shù)和字段都使工作更加容易。在開辟和維護(hù)階段,整潔的代碼讓工作更加容易。概括起來說,遵守標(biāo)準(zhǔn)將提高你開辟過程中的生產(chǎn)率,并且使你的代碼更易維護(hù)(因此也使維護(hù)者的生產(chǎn)率提高了)。如果從一開始你就寫出整潔的代碼,你將在撰寫過程中受益。4.使它們成為你的質(zhì)量保證的過程。代碼檢查的一部份應(yīng)該是確保源碼遵守你的機(jī)構(gòu)所采用的標(biāo)準(zhǔn)。將標(biāo)準(zhǔn)作為你訓(xùn)練和指導(dǎo)開辟員更有3.2其它導(dǎo)向成功代碼的因素1.面向人而不是面向機(jī)器編程。你的開辟努力的主要目的應(yīng)該是你的代碼易被其它人理解。如果沒人能理解它,它就一點(diǎn)兒優(yōu)點(diǎn)也沒有。使用命名約定。注釋代碼。給代碼分段。2.首先設(shè)計(jì),然后編寫代碼。你是否曾經(jīng)遇到過這樣的情況:一些你的程序所倚靠的代碼需要修改?可能是要傳一個(gè)新的參數(shù)給一個(gè)成員函數(shù),或者是需要將一個(gè)類拆成幾個(gè)類。為了確信你的代碼與被重新設(shè)置修改的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論