程序員開發(fā)手冊(cè)_第1頁(yè)
程序員開發(fā)手冊(cè)_第2頁(yè)
程序員開發(fā)手冊(cè)_第3頁(yè)
程序員開發(fā)手冊(cè)_第4頁(yè)
程序員開發(fā)手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

經(jīng)典word整理文檔,僅參考,雙擊此處可刪除頁(yè)眉頁(yè)腳。本資料屬于網(wǎng)絡(luò)整理,如有侵權(quán),請(qǐng)聯(lián)系刪除,謝謝!.1概述1.1目的1、方便代碼的交流和維護(hù)。2、不影響編碼的效率,不與大眾習(xí)慣沖突。3、使代碼更美觀、閱讀更方便。4、使代碼的邏輯更清晰、更易于理解。1.2范圍維護(hù)階段。1.3警示不符合編碼規(guī)范的,必須在限期【部門主管或相關(guān)負(fù)責(zé)人指定時(shí)間】?jī)?nèi)修正,逾期視為工作過失,部門主管或相關(guān)負(fù)責(zé)人視具體情況做出相關(guān)處理。1.4術(shù)語定義1、匈牙利命名法【禁用】寫的一個(gè)單詞或多個(gè)單詞組合,該單詞要指明變量的用途。例如:aUserId數(shù)組(Array)定義以小寫字母a開頭2、帕斯卡(pascal)命名法【推薦】字符的標(biāo)識(shí)符使用Pascal大小寫。例如:UserId3、駱駝(Camel)命名法【推薦】標(biāo)識(shí)符的首字母小寫,而每個(gè)后面連接的單詞的首字母都大寫。例如:userIdword編輯文檔.2代碼格式2.1列寬1、為了防止在閱讀代碼時(shí)不得不滾動(dòng)源代碼編輯器,每行代碼或注釋在一般顯示頻率下不得超過一顯示屏,代碼列寬控制在110字符左右。2、系統(tǒng)中部分代碼可以不遵循此原則。如:VIWFormItemDetail[]dv=(VIWFormItemDetail[])MHelper.SQLCommand.query(sql,VIWFormItemDetail.TName,sqlParams);語句拼接、字符串拼接、函數(shù)參數(shù)名過長(zhǎng)、判斷語句過長(zhǎng)的代碼要遵循以上原則。2.2換行1、當(dāng)表達(dá)式超出或即將超出規(guī)定的列寬,一行被分為幾行時(shí),通過將串聯(lián)運(yùn)算符放在每一行的末尾而不是開頭,清楚地表示沒有后面的行是不完整的。StringquerySql=“SELECTProjectId”+“,ProjectTitle”+“FROMProject”2、每一行上放置的語句避免超過一條。3、當(dāng)表達(dá)式超出或即將超出規(guī)定的列寬,遵循以下規(guī)則進(jìn)行換行(1)在逗號(hào)前換行。(2)在操作符前換行。(3)規(guī)則1優(yōu)先于規(guī)則2。例如:StringBuilderquerySql=newStringBuilder();querySql.Append("SELECTa.ProjectIdASPK");querySql.Append(",a.ProjectTitle");querySql.Append(",a.ProjectDisplayCode");querySql.Append(",a.IsbnCodeASISBNCode");querySql.Append("FROMProjecta");當(dāng)以上規(guī)則會(huì)導(dǎo)致代碼混亂的時(shí)候自己采取更靈活的換行規(guī)則。word編輯文檔.2.3縮進(jìn)縮進(jìn)應(yīng)該是每行一個(gè)Tab(4個(gè)空格),不要在代碼中使用Tab字符。VisualStudio.Net設(shè)置:工具->選項(xiàng)->文本編輯器->C#->制表符->插入空格2.4空行空行是為了將邏輯上相關(guān)聯(lián)的代碼分塊,以便提高代碼的可閱讀性。在以下情況下使用兩個(gè)空行1、接口和類的定義之間。2、枚舉和類的定義之間。3、類與類的定義之間。在以下情況下使用一個(gè)空行1、方法與方法、屬性與屬性之間。2、方法中變量聲明與語句之間。3、方法與方法之間。4、方法中不同的邏輯塊之間。5、方法中的返回語句與其他的語句之間。6、屬性與方法、屬性與字段、方法與字段之間。7、注釋與它注釋的語句間不空行,但與其他的語句間空一行。2.5空格在以下情況中要使用到空格1、關(guān)鍵字和左括符“(”應(yīng)該用空格隔開。如while(true)注意;在方法名和左括符“(”之間不要使用空格,這樣有助于辨認(rèn)代碼中的方法調(diào)用與關(guān)鍵字。多個(gè)參數(shù)用逗號(hào)隔開,每個(gè)逗號(hào)后都應(yīng)加一個(gè)空格。.符、++及--與操作數(shù)間不需要空格。如a+=c+d;word編輯文檔.a=(a+b)/(c*d);while(d++=s++){n++;}PrintSize(“sizeis“+size+“\n”);3、語句中的表達(dá)式之間用空格隔開。如for(expr1;expr2;expr3)4、以下寫法是不允許的:intj=i+k;2.6括號(hào)-()1、左括號(hào)“(”不要緊靠關(guān)鍵字,中間用一個(gè)空格隔開。2、左括號(hào)“(”與方法名之間不要添加任何空格。3、沒有必要的話不要在返回語句中使用()。如if(condition)Array.Remove(1)return12.7花括號(hào)-{}1、左花括號(hào)“{”放于關(guān)鍵字或方法名的下一行并與之對(duì)齊。如if(condition){}publicintAdd(intx,inty){}2、左花括號(hào)“{”要與相應(yīng)的右花括號(hào)“}”對(duì)齊。3、通常情況下左花括號(hào)“{”單獨(dú)成行,不與任何語句并列一行。4、語句后一定要使用{},即使{}號(hào)中為空或只有一條語句。如if(somevalue==1)word編輯文檔.{somevalue=2;}右花括號(hào)“}”后建議加一個(gè)注釋以便于方便的找到與之相應(yīng)的{。如while(1){if(valid){}//ifvalidelse{}//notvalid}//endforever以下情況是不允許的:if(x==0){Response.Write("用戶編號(hào)必須輸入!");}或者:if(x==0){Response.Write("用戶編號(hào)必須輸入!");}2.8分解將大的復(fù)雜代碼節(jié)分為較小的、易于理解的模塊。2.9SQL1、編寫SQL語句時(shí),對(duì)于關(guān)鍵字或保留字使用全部大寫,對(duì)于數(shù)據(jù)庫(kù)元素(如表、列和視圖等命名)使用帕斯卡命名法命名。如:SELECTUserIdASEmIdFROMUserSELECTUserIdASEmIdFROMUserASemSELECTUserIdASEmIdFROMUserASEM等允許使用;2、將每個(gè)主要的SQL子句放在不同的行上,這樣更容易閱讀和編輯語句。例如:SELECTFirstName,LastNameFROMCustomersWHEREState='WA';3、不要從數(shù)據(jù)表中調(diào)用頁(yè)面或程序不需要的字段;word編輯文檔.2.10引用1、對(duì)于程序中字段名稱的引用要通過對(duì)應(yīng)的屬性調(diào)用實(shí)現(xiàn)。如:IntuserId=(int)Dv[0][“UserId”];是不允許的;IntuserId=(int)Dv[0][User.x.UserId.ColumnName];是允許的;stringbookPriceName=Book.x.BookPrice.ColumnName;decimal?bookPrice=null;if(dr[bookPriceName]!=DBNull.Value){bookPrice=(decimal)dr[bookPriceName];}是允許的;3程序注釋3.1注釋概述1、修改代碼時(shí),總是使代碼周圍的注釋保持最新。2、在每個(gè)例程的開始,提供標(biāo)準(zhǔn)的注釋樣本以指示例程的用途、假設(shè)和限制很有幫助。注釋樣本應(yīng)該是解釋它為什么存在和可以做什么的簡(jiǎn)短介紹。3、避免在代碼行的末尾添加注釋;行尾注釋使代碼更難閱讀。不過在批注變量齊。4、避免雜亂的注釋,如一整行星號(hào)。而是應(yīng)該使用空白將注釋同代碼分開。5、避免在塊注釋的周圍加上印刷框。這樣看起來可能很漂亮,但是難于維護(hù)。6產(chǎn)生混亂。7更簡(jiǎn)單以便于人們使用而犧牲性能,但必須保持性能和可維護(hù)性之間的平衡。8、在編寫注釋時(shí)使用完整的句子。注釋應(yīng)該闡明代碼,而不應(yīng)該增加多義性。9、在編寫代碼時(shí)就注釋,因?yàn)橐院蠛芸赡軟]有時(shí)間這樣做。另外,如果有機(jī)會(huì)word編輯文檔.復(fù)查已編寫的代碼,在今天看來很明顯的東西六周以后或許就不明顯了。10、避免多余的或不適當(dāng)?shù)淖⑨專缬哪牟恢饕膫渥ⅰ?1、使用注釋來解釋代碼的意圖。它們不應(yīng)作為代碼的聯(lián)機(jī)翻譯。12、注釋代碼中不十分明顯的任何內(nèi)容。13、為了防止問題反復(fù)出現(xiàn),對(duì)錯(cuò)誤修復(fù)和解決方法代碼總是使用注釋,尤其是在團(tuán)隊(duì)環(huán)境中。14、對(duì)由循環(huán)和邏輯分支組成的代碼使用注釋。這些是幫助源代碼讀者的主要方面。15、在整個(gè)應(yīng)用程序中,使用具有一致的標(biāo)點(diǎn)和結(jié)構(gòu)的統(tǒng)一樣式來構(gòu)造注釋。16、用空白將注釋同注釋分隔符分開。在沒有顏色提示的情況下查看注釋時(shí),這樣做會(huì)使注釋很明顯且容易被找到。1718、對(duì)于常量、變量、表達(dá)式等使用單行注釋時(shí)建議放到聲明的后面;19、對(duì)于常量、變量、表達(dá)式等建議使用單行注釋,單行注釋格式如:privateintnumber;//注釋語句或:////注釋語句privateintnumber;20、為了使層次清晰,在閉合的右花括號(hào)后注釋該閉合所對(duì)應(yīng)的起點(diǎn)(此項(xiàng)只namespaceLangchao.Procument.Web{}//namespaceLangchao.Procument.Web3.2文檔型注釋該類注釋采用.Net已定義好的Xml好的了解代碼的實(shí)現(xiàn)和接口。如///<summary>MyMethodisamethodintheMyClassclass.///<para>Here'showyoucouldmakeasecondparagraphinaword編輯文檔.description.///<seecref="System.Console.WriteLine"/>///forinformationaboutoutputstatements.///</para>///<seealsocref="MyClass.Main"/>///</summary>publicstaticvoidMyMethod(intInt1){}又如:類屬性注釋規(guī)范在類的屬性必須以以下格式編寫屬性注釋:///<summary>///屬性說明///</summary>方法注釋規(guī)范在類的方法聲明前必須以以下格式編寫注釋///<summary>///說明:<對(duì)該方法的說明>///</summary>///<paramname="<參數(shù)名稱>"><參數(shù)說明></param>///<returns>///<對(duì)方法返回值的說明,該說明必須明確說明返回的值代表什么含義>///</returns>3.3類c注釋(此項(xiàng)只供參考)該類注釋用于1、不再使用的代碼。2、臨時(shí)測(cè)試屏蔽某些代碼。word編輯文檔.用法/*[修改標(biāo)識(shí)][修改原因]...(thesourcecode)*/3.4單行注釋該類注釋用于1、方法內(nèi)的代碼注釋。如變量的聲明、代碼或代碼段的解釋。注釋示例:///<summary>///注釋語句///</summary>privateintnumber;或////注釋語句privateintnumber;或privateintnumber;//注釋語句2、方法內(nèi)變量的聲明或花括號(hào)后的注釋,注釋示例:if(1==1){//alwaystruestatement;}//alwaystrue3.5文件注釋文件功能描述只需簡(jiǎn)述,具體詳情在類的注釋中描述。3.6注釋標(biāo)簽用法c>錯(cuò)誤!超鏈接引用無效。為您提供了一種將說明中的文本</c>標(biāo)記為代碼的方法。使用<code>word編輯文檔.<returns>結(jié)構(gòu)添加到文本中。<paramname='錯(cuò)誤!超鏈接述方法的一個(gè)參數(shù)。用無效。</param><paramref><paramrefname="錯(cuò)誤!超<paramref>標(biāo)記為您提供了一種指示詞為參數(shù)的方法??梢蕴幚鞽ML格式化該參數(shù)。<see錯(cuò)誤!超鏈接引用無效。錯(cuò)誤!超鏈接引用無效。<seealso>指示希望在“請(qǐng)參cref="member"對(duì)可以通過當(dāng)前編譯環(huán)境進(jìn)行調(diào)用的成員或字段的引用。編譯器檢查到給定代碼元素存在后,將member傳遞給輸出XMLmember括在雙引號(hào)("")中。word編輯文檔.<seealso錯(cuò)誤!超鏈接引用使您得以指定希望在“請(qǐng)參閱”無效。錯(cuò)誤!超鏈接引用無一節(jié)中出現(xiàn)的文本。使用<see><example>錯(cuò)誤!超鏈接引用使用<example>標(biāo)記可以指定使<code>標(biāo)記的使用。<code>錯(cuò)誤!超鏈接引用無記為您提供了一種將多行指示為代碼的方法。使用<c>指示應(yīng)將說明中的文本標(biāo)記為代碼<summary>錯(cuò)誤!超鏈接引用應(yīng)當(dāng)用于描述類型成員。使用<remarks>以提供有關(guān)類型本身的信息。<exception><exception錯(cuò)誤!超鏈接引<exception>標(biāo)記使您可以指定類能夠引發(fā)的異常。word編輯文檔.<includefile='錯(cuò)誤!超鏈<include>標(biāo)記使您得以引用描path='錯(cuò)誤!述源代碼中類型和成員的另一文超鏈接引用無效。[@錯(cuò)誤!超鏈接引用無效。="錯(cuò)誤!直接置于源代碼文件中之外的另filename包含文檔的文件<include>標(biāo)記使用XMLXPath名。該文件名可用路徑加以語法。有關(guān)自定義<include>使限定。將filename括在單用的方法,請(qǐng)參閱XPath文檔。位于注釋之前的標(biāo)記的id。將此id括在雙引號(hào)中("")。word編輯文檔.<listheader>塊用于定義表或定需為標(biāo)題中的項(xiàng)提供一個(gè)項(xiàng)。<term>錯(cuò)誤!超鏈接引用無列表中的每一項(xiàng)用<item>塊指效。</term><description>錯(cuò)誤!超鏈接term也需要指定引用無效。</description>于表、項(xiàng)目符號(hào)列表或編號(hào)列表,只需為text提供一個(gè)項(xiàng)。列表或表所擁有的<item>塊數(shù)term定義的項(xiàng),該項(xiàng)將在text中定義。description目符號(hào)列表或編號(hào)列表中的項(xiàng)或者term的定義。<permission><permission錯(cuò)誤!超鏈接<permission>標(biāo)記使您得以將成員的訪問記入文檔。無效。"member">錯(cuò)誤!超鏈System.Security.PermissionSet使您得以指定對(duì)成員的訪問。cref="member"對(duì)可以通過當(dāng)前編譯環(huán)境進(jìn)行調(diào)用的word編輯文檔.description成員的訪問的<remarks>錯(cuò)誤!超鏈接引用<remarks>標(biāo)記是可以指定有關(guān)類或其他類型的概述信息的位置。<summary>是可以描述該類型的description成員的說明。成員的位置。<returns>錯(cuò)誤!超鏈接引用<returns>標(biāo)記應(yīng)當(dāng)用于方法聲明的注釋,以描述返回值。<value>錯(cuò)誤!超鏈接引用無<value>標(biāo)記使您得以描述屬性。VisualStudio.NET開發(fā)環(huán)境中通過代碼向?qū)砑訉賞roperty-description屬性時(shí),它將會(huì)為新屬性添加<summary>添加<value>標(biāo)記以描述該屬性所表示的值。4申明4.1每行聲明數(shù)一行只建議作一個(gè)聲明,并按字母順序排列。如:word編輯文檔.intlevel;//推薦intsize;intx,y;//推薦//不推薦4.2初始化建議在變量聲明時(shí)就對(duì)其做初始化。4.3位置變量建議置于塊的開始處,不要總是在第一次使用它們的地方做聲明。如voidMyMethod(){intint1=0;if(condition){//beginningofmethodblockintint2=0;//beginningof"if"block...}}不過也有一個(gè)例外for(inti=0;i<maxLoops;i++){...}應(yīng)避免不同層次間的變量重名,如intcount;...voidMyMethod(){if(condition){intcount=0;//避免word編輯文檔}...}4.4類和接口的聲明1在方法名與其后的左括號(hào)間沒有任何空格。2左花括號(hào)“{”出現(xiàn)在聲明的下行并與之對(duì)齊,單獨(dú)成行。3方法間用一個(gè)空行隔開。4.5字段的聲明不要使用是public或protected的實(shí)例字段。如果避免將字段直接公開段不能被更改為屬性。考慮為字段提供get和set屬性訪問器,而不是使它們成為公共的。get和set屬性訪問器中可執(zhí)行代碼的存在使得可以進(jìn)行后續(xù)改闡釋帶有g(shù)et和set屬性訪問器的私有實(shí)例字段的正確使用。示例:publicclassControl:Component{privateinthandle;publicintHandle{get{returnhandle;}}}word編輯文檔.5命名規(guī)范5.1命名概述名稱應(yīng)該說明“什么”而不是“如何”。通過避免使用公開基礎(chǔ)實(shí)現(xiàn)(它們會(huì)發(fā)生改變)的名稱,可以保留簡(jiǎn)化復(fù)雜性的抽象層。例如,可以使用GetNextStudent(),而不是GetNextArrayElement()。命名原則是:稱是有意義的。不過,請(qǐng)確保選擇的名稱符合適用語言的規(guī)則和標(biāo)準(zhǔn)。以下幾點(diǎn)是推薦的命名方法。名xxK8。這樣的名稱會(huì)導(dǎo)致多義性。2、在類屬性的名稱中包含類名是多余的,如Book.BookTitle。而是應(yīng)該使用Book.Title。4、在變量名中使用互補(bǔ)對(duì),如min/max、begin/end和open/close。5、布爾變量名應(yīng)該包含Is,這意味著Yes/No或True/False值,如fileIsFound。6、在命名狀態(tài)變量時(shí),避免使用諸如Flag的術(shù)語。狀態(tài)變量不同于布爾變量的地方是它可以具有兩個(gè)以上的可能值。不是使用documentFlag,而是使用更具描述性的名稱,如documentFormatType。(此項(xiàng)只供參考)7、即使對(duì)于可能僅出現(xiàn)在幾個(gè)代碼行中的生存期很短的變量,仍然使用有意義的名稱。僅對(duì)于短循環(huán)索引使用單字母變量名,如i或j??赡艿那闆r下,盡量不要使用原義數(shù)字或原義字符串,如Fori=1ToFori=1ToNUM_DAYS_IN_WEEK以便于維護(hù)和理解。word編輯文檔.5.2大小寫規(guī)則大寫用該約定。例如:System.IOSystem.Web.UI下表匯總了大寫規(guī)則,并提供了不同類型的標(biāo)識(shí)符的示例。IDisposable注意總是以I前綴開始。RedValue注意很少使用。屬性優(yōu)于使用公共實(shí)例字段。redValue注意很少使用。屬性優(yōu)于使用受保護(hù)的實(shí)例字段。方法內(nèi)的變量5.3縮寫CamelbackColor為了避免混淆和保證跨語言交互操作,請(qǐng)遵循有關(guān)區(qū)縮寫的使用的下列規(guī)則:1不要將縮寫或縮略形式用作標(biāo)識(shí)符名稱的組成部分。例如,使用GetWindow,而不要使用GetWin。word編輯文檔.2不要使用計(jì)算機(jī)領(lǐng)域中未被普遍接受的縮寫。3UI作為UserInterface縮寫,用OLAP作為On-lineAnalyticalProcessing的縮寫。4在使用縮寫時(shí),對(duì)于超過兩個(gè)字符長(zhǎng)度的縮寫請(qǐng)使用Pascal大小寫或Camel大小寫。例如,使用HtmlButton或HTMLButton。但是,應(yīng)當(dāng)大寫僅有兩個(gè)字符的縮寫,如,System.IO,而不是System.Io。5不要在標(biāo)識(shí)符或參數(shù)名稱中使用縮寫。如果必須使用縮寫,對(duì)于由多于兩個(gè)字符所組成的縮寫請(qǐng)使用Camel大小寫,雖然這和單詞的標(biāo)準(zhǔn)縮寫相沖突。5.4命名空間1、命名命名空間時(shí)的一般性規(guī)則是使用公司名稱,后跟技術(shù)名稱和可選的功能與設(shè)計(jì),如下所示。CompanyName.TechnologyName[.Feature][.Design]2、命名空間使用Pascal大小寫,用逗號(hào)分隔開。3、TechnologyName指的是該項(xiàng)目的英文縮寫,或軟件名。Debug后,就不要再使用Debug作為一個(gè)名稱空間名。5.5類1、使用Pascal大小寫。2、用名詞或名詞短語命名類。3、使用全稱避免縮寫,除非縮寫已是一種公認(rèn)的約定,如URL、HTML4、不要使用類型前綴,如在類名稱上對(duì)類使用C前綴。例如,使用類名稱FileStream,而不是CFileStream。5、不要使用下劃線字符(_)。6、有時(shí)候需要提供以字母I開始的類名稱,雖然該類不是接口。只要I是作word編輯文檔.為類名稱組成部分的整個(gè)單詞的第一個(gè)字母,這便是適當(dāng)?shù)?。例如,類名稱IdentityStore名稱的第二個(gè)部分應(yīng)當(dāng)是基類的名稱。例如,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作為類名稱的一部分將使名稱不必要地加長(zhǎng)。publicclassFileStreampublicclassButtonpublicclassString5.6接口以下規(guī)則概述接口的命名指南:1、用名詞或名詞短語,或者描述行為的形容詞命名接口。例如,接口名稱IComponent使用描述性名詞。接口名稱ICustomAttributeProvider使用名詞短語。名稱IPersistable使用形容詞。2、使用Pascal大小寫。3、少用縮寫。4、給接口名稱加上字母I前綴,以指示該類型為接口。在定義類/接口對(duì)(其中類是接口的標(biāo)準(zhǔn)實(shí)現(xiàn))時(shí)使用相似的名稱。兩個(gè)名稱的區(qū)別應(yīng)該只是接口名稱上有字母I前綴。5、不要使用下劃線字符(_)。稱。兩個(gè)名稱的不同之處只是接口名前有一個(gè)I前綴。以下是正確命名的接口的示例。publicinterfaceIServiceProviderword編輯文檔.publicinterfaceIFormatable以下代碼示例闡釋如何定義IComponent接口及其標(biāo)準(zhǔn)實(shí)現(xiàn)Component類。publicinterfaceIComponent{//Implementationcodegoeshere.}publicclassComponent:IComponent{//Implementationcodegoeshere.}5.7屬性(Attribute)應(yīng)該總是將后綴Attribute添加到自定義屬性類。以下是正確命名的屬性類的示例。publicclassObsoleteAttribute{}5.8枚舉(Enum)枚舉(Enum)值類型從Enum類繼承。以下規(guī)則概述枚舉的命名指南:1、對(duì)于Enum類型和值名稱使用Pascal大小寫。2、少用縮寫。3、不要在Enum類型名稱上使用Enum后綴。4、對(duì)大多數(shù)Enum類型使用單數(shù)名稱,但是對(duì)作為位域的Enum類型使用復(fù)數(shù)名稱。5、總是將FlagsAttribute添加到位域Enum類型。word編輯文檔.5.9參數(shù)以下規(guī)則概述參數(shù)的命名指南:1、使用描述性參數(shù)名稱。參數(shù)名稱應(yīng)當(dāng)具有足夠的描述性,以便參數(shù)的名稱及其類型可用于在大多數(shù)情況下確定它的含義。2、對(duì)參數(shù)名稱使用Camel大小寫。3、使用描述參數(shù)的含義的名稱,而不要使用描述參數(shù)的類型的名稱。開發(fā)4、不要使用保留的參數(shù)。保留的參數(shù)是專用參數(shù),如果需要,可以在未來添加新的重載。5、不要給參數(shù)名稱加匈牙利語類型表示法的前綴。6、如果參數(shù)用來表述數(shù)據(jù)表字段內(nèi)容的,數(shù)據(jù)類型必須和表字段類型保持一致。如:UserId為int,不允許作為string類型來傳遞以下是正確命名的參數(shù)的示例。TypeGetType(stringtypeName)stringFormat(stringformat,args()Asobject)5.10方法以下規(guī)則概述方法的命名指南:1、使用動(dòng)詞或動(dòng)詞短語命名方法。正確的應(yīng)為int,如果方法返回的BookType為string,這樣的設(shè)計(jì)不允許,使用的地方根本就不知道返回的BookType到底什么。如果是返回值有不存在的情況,應(yīng)返回可空的強(qiáng)類型,而不應(yīng)該返回0表示沒有值。3、使用Pascal大小寫。4、以下是正確命名的方法的實(shí)例。RemoveAll()word編輯文檔.GetCharArray()Invoke()5.11屬性(property)以下規(guī)則概述屬性的命名指南:1、使用名詞或名詞短語命名屬性。2、返回類型應(yīng)為數(shù)據(jù)庫(kù)數(shù)據(jù)原始存儲(chǔ)的實(shí)際類型。3、使用Pascal大小寫。4、不要使用匈牙利語表示法。5、考慮用與屬性的基礎(chǔ)類型相同的名稱創(chuàng)建屬性。例如,如果聲明名為Color的屬性,則屬性的類型同樣應(yīng)該是Color。請(qǐng)參閱本主題中后面的示例。以下代碼示例闡釋正確的屬性命名。publicclassSampleClass{publicColorBackColor{//CodeforGetandSetaccessorsgoeshere.}}以下代碼示例闡釋提供其名稱與類型相同的屬性。publicenumColor{//InsertcodeforEnumhere.}publicclassControl{publicColorColor{Get{word編輯文檔.//Insertcodehere.}set{//Insertcodehere.}}}以下代碼示例不正確,原因是Color屬性是Integer類型的。publicenumColor{//InsertcodeforEnumhere.}publicclassControl{publicintColor{//Insertcodehere}}在不正確的示例中,不可能引用Color枚舉的成員。Color.Xxx將被解釋為訪問一個(gè)成員,該成員首先獲取Color屬性(C#中為int類型)的值,然后再訪問該值的某個(gè)成員(該成員必須是System.Int325.12事件以下規(guī)則概述事件的命名指南:1、對(duì)事件處理程序名稱使用EventHandler后綴。2、指定兩個(gè)名為sender和e的參數(shù)。sender參數(shù)表示引發(fā)事件的對(duì)象。sender參數(shù)始終是object此。與事件相關(guān)聯(lián)的狀態(tài)封裝在名為e的事件類的實(shí)例中。對(duì)e參數(shù)類型word編輯文檔.使用適當(dāng)而特定的事件類。3、用EventArgs后綴命名事件參數(shù)類。4、考慮用動(dòng)詞命名事件。去式表示事件后。例如,可以取消的Close事件應(yīng)當(dāng)具有Closing事件和Closed事件。不要使用BeforeXxx/AfterXxx命名模式。6、不要在類型的事件聲明上使用前綴或者后綴。例如,使用Close,而不要使用OnClose。7、通常情況下,對(duì)于可以在派生類中重寫的事件,應(yīng)在類型上提供一個(gè)受保護(hù)實(shí)例。以下示例闡釋具有適當(dāng)名稱和參數(shù)的事件處理程序。publicdelegatevoidMouseEventHandler(objectsender,MouseEventArgse);以下示例闡釋正確命名的事件參數(shù)類。publicclassMouseEventArgs:EventArgs{intx;inty;publicMouseEventArgs(intx,inty){this.x=x;this.y=y;}publicintX{get{returnx;word編輯文檔.}}publicintY{get{returny;}}}5.13常量(const)以下規(guī)則概述常量的命名指南:1、所有單詞大寫,多個(gè)單詞之間用"_"隔開。如:publicconststringPAGE_TITLE="Welcome";2、系統(tǒng)中僅推薦在Const.cs和ConstValue.cs中聲明;目錄下】中,不能按以上規(guī)則命名;4、其它未說明的地方,使用Pascal大小寫命名。5.14字段以下規(guī)則概述字段的命名指南:1、private、protected使用Camel大小寫。2、public使用Pascal大小寫。字段名稱不要使用大寫字母。下面是正確命名的字段的示例。classSampleClass{stringurl;stringdestinationUrl;word編輯文檔.}4、不要對(duì)字段名使用匈牙利語表示法。好的名稱描述語義,而非類型。5、不要對(duì)字段名或靜態(tài)字段名應(yīng)用前綴。具體說來,不要對(duì)字段名稱應(yīng)用前綴來區(qū)分靜態(tài)和非靜態(tài)字段。例如,應(yīng)用g_或s_前綴是不正確的。6、對(duì)預(yù)定義對(duì)象實(shí)例使用公共靜態(tài)只讀字段。如果存在對(duì)象的預(yù)定義實(shí)例,則將它們聲明為對(duì)象本身的公共靜態(tài)只讀字段。使用Pascal大小寫,原因是字段是公共的。下面的代碼示例闡釋公共靜態(tài)只讀字段的正確使用。publicstructColor{publicstaticreadonlyColorRed=newColor(0x0000FF);publicColor(intrgb){//Insertcodehere.}publicColor(byter,byteg,byteb){//Insertcodehere.}publicbyteRedValue{get{returnColor;}}5.15靜態(tài)字段以下規(guī)則概述靜態(tài)字段的命名指南:1、使用名詞、名詞短語或者名詞的縮寫命名靜態(tài)字段。2、使用Pascal大小寫。3、對(duì)靜態(tài)字段名稱使用匈牙利語表示法前綴【不推薦使用,可使用常量命名規(guī)4、建議盡可能使用靜態(tài)屬性而不是公共靜態(tài)字段。word編輯文檔.5.16集合集合是一組組合在一起的類似的類型化對(duì)象,如哈希表、查詢、堆棧、字典和列表,集合的命名建議用復(fù)數(shù)。如:1、單數(shù)型式舉列:審核狀態(tài):AuditState提交類型:PostType2、復(fù)數(shù)型式舉列:審核狀態(tài):AuditStatus提交類型:PostTypes5.17措詞避免使用與常用的.NET框架命名空間重復(fù)的類名稱。例如,不要將以下任何名稱用作類名稱:或UI。有關(guān).NET框架命名空間的列表,請(qǐng)參閱類庫(kù)。另外,避免使用和以下關(guān)鍵字沖突的標(biāo)識(shí)符。AddHandlerAddressOfElseIfEventFinallyGetEraseFalseFriendErrorExitExternalSourceForFinalizeFunctionFloatGetTypeGotoword編輯文檔.WithEventsWriteOnlyinstanceofpackagevar6語句6.1每行一個(gè)語句每行最多包含一個(gè)語句。如:a++;b--;//推薦//推薦a++;b--;//不推薦6.2復(fù)合語句word編輯文檔.以下幾點(diǎn)1子語句要縮進(jìn)。2左花括號(hào)“{”在復(fù)合語句父語句的下一行并與之對(duì)齊,單獨(dú)成行。3即使只有一條子語句要不要省略花括號(hào)“while(d+=s++){n++;}6.3return語句return語句中不使用括號(hào),除非它能使返回值更加清晰。如:return;returnmyDisk.size();return(size?size:defaultSize);6.4if、if-else、ifelse-if語句if、if-else、ifelse-if語句使用格式if(condition){statements;}if(condition){statements;}else{statements;}word編輯文檔.if(condition){statements;}elseif(condition){statements;}else{statements;}6.4for、foreach語句for語句使用格式for(initialization;condition;update){statements;}空的for語句(所有的操作都在initialization、condition或update中實(shí)現(xiàn))使用格式for(initialization;condition;update);//updateuseridforeach語句使用格式foreach(objectobjinarray){statements;word編輯文檔.}注意1在循環(huán)過程中不要修改循環(huán)計(jì)數(shù)器。2對(duì)每個(gè)空循環(huán)體給出確認(rèn)性注釋。6.5while語句while語句使用格式while(condition){statements;}空的while語句使用格式while(condition);do-while語句do-while語句使用格式do{statements;}while(condition);switch-case語句switch-case語句使用格式switch(condition){case1:statements;break;word編輯文檔.case2:statements;break;default:statements;break;}注意:1、語句switch中的每個(gè)case各占一行。2、語句switch中的case按字母順序排列。3、為所有switch語句提供default分支。4、所有的非空case語句必須用break;語句結(jié)束。try-catch語句try-catch語句使用格式try{statements;}catch(ExceptionClasse){statements;}finally{statements;}word編輯文檔.using塊語句using塊語句使用格式using(object){statements;}goto語句goto語句使用格式gotoLabel1:statements;Lable1:statements;7控件命名規(guī)則7.1命名方法控件名簡(jiǎn)寫+英文描述,英文描述首字母大寫7.2主要控件名簡(jiǎn)寫對(duì)照表arrShoppingListblnIsPostBackbytPixelValuechrDelimiterdtmStartDatedecAverageHeightDateTimeDecimaldecword編輯文檔.dblintlngobjshrsngstrSingleStringWebControlsTypestrFirstName_ButtoSubmit_ButtonncalcalMettingDateschkchkBlueCheckBoxListchklchklInvoiceStateCompareValidatorCustomValidatorDataGridvalcvalcValidAgevalxvalxDBCheckdgrddgrdTitlesdlstdlstTitlesCVAddresseevalxMailModedlstdlstCollectBillDynamicValidatorvalvaldColorsddcvCustomerNameDropDownListHyperLinkImagedropdropCountrieslnklnkDetailsimgimgAuntBettyibtnibtnSubmitProjectStatelnkBooksimgOkImageButton_ButtoSave_Buttonword編輯文檔.lbllblResultslbtnlbtnSubmitlstlstCountriespnlpnlForm2PlaceHolderRadioButtonRadioButtonListRangeValidatorplhplhFormContentsradradFemaleradlradlGendervalgvalgAgeREVTaxAccountrptrptQueryResultsrptInvoicesRFVAccountBanktblQuerytbltblCountryCodestblctblcGermanytblrtblrCountrytxttxtFirstNamevalsvalsFormErrorsxmlcxmlcTransformResultstblrtblrDisplayCustomerNameValidationSummaryXMLvalsvalsFormErrorsUpdatePanelADO.NET【僅供參考】TypeUPUPCityDataAdapterDataReaderdtrdtrProductsword編輯文檔.dtbldrowdcoldreldvwDataColumnDataRelationDataViewdcolProductIDdrelMasterDetaildvwFilteredProducts8頁(yè)面規(guī)范8.1樣式1、對(duì)于多處使用的頁(yè)面樣式要定義。等列表顯示中字段值為字符且長(zhǎng)度超過6個(gè)漢字的,一般情況下四舍五入保留2為小數(shù),特殊數(shù)字根據(jù)實(shí)際業(yè)務(wù)具體處理。如:折扣輸入正整數(shù),印張保留3為小數(shù),材料單位為噸的保留6位小數(shù),為令的保留3位小數(shù),為張的保留1位小數(shù)。DataGrid、GridView等列表顯示中默認(rèn)每頁(yè)顯示15行。3、DataGrid、GridView等列表中的字段標(biāo)題居中對(duì)齊,不換行。4、列表頁(yè)面中輸入控件、選擇控件、下拉控件盡量保持寬度一致,擺放位5、置為左對(duì)齊,字段標(biāo)題居中對(duì)齊不換行,字段標(biāo)題不能兩邊對(duì)齊的,默等定位到新頁(yè)面按鈕的,請(qǐng)把此按鈕的頁(yè)面驗(yàn)證去掉,如果驗(yàn)證控件驗(yàn)例如:?jiǎn)T工姓名為下拉框,在HTML頁(yè)面中加STYLE。列表頁(yè)面中的頁(yè)面標(biāo)題居中顯示,要和菜單和具體表述的模塊或功能保6、持一致。7、翻頁(yè)控件;提交、顯示、列表等頁(yè)面中的日期輸入框默認(rèn)寬度為70px只讀+日期選8、擇控件;下來選擇框默認(rèn)90px;輸入框默認(rèn)90px;盡量遵循控件左對(duì)齊word編輯文檔.和兩邊對(duì)齊的方式。提交、顯示頁(yè)面中的顯示字段,如果字段值不超過6個(gè)漢字的,默認(rèn)居中對(duì)齊,超過6個(gè)漢字的默認(rèn)左對(duì)齊;如:叢書信息有可能超過6個(gè)漢字,左對(duì)齊。9、10、頁(yè)面數(shù)據(jù)驗(yàn)證控件的位置和被驗(yàn)證控件的保持同行且不換行,驗(yàn)證控件如:requiredfieldvalidator的ErrorMessage要和ToolTip保持一致,其它存在此屬性的驗(yàn)證控件也按照此方式執(zhí)行;驗(yàn)證控件提示信息中的標(biāo)點(diǎn)符號(hào)用中文全角。11、日期格式?jīng)]有特殊要求的情況下一律默認(rèn):yyyy-MM-dd格式。12、頁(yè)面中的冗余代碼全部刪除。13、頁(yè)面中控件的擺放位置需要通過Table表格去約束此控件所處位置,不能把多個(gè)控件放在同一個(gè)TD中且通過<br>或 去實(shí)現(xiàn)位置的擺放。14、HtmlControl控件的寬度盡量使用style=”width:90px”去約束而不是用size="6"。8.2腳本1、同種類型的腳本盡量放到同一個(gè)位置。2、腳本中的提示信息的格式要和頁(yè)面驗(yàn)證控件的提示信息保持一致;如:提示中的標(biāo)點(diǎn)符號(hào)要使用中文全角。3、腳本變量、數(shù)組、對(duì)象、驗(yàn)證、返回值等命名規(guī)則同樣遵循帕斯卡和駱駝命名法;8.3呈現(xiàn)1、頁(yè)面中的字段命名盡量和表設(shè)計(jì)中的字段名稱保持一致。2、對(duì)于字段名稱和數(shù)據(jù)表中當(dāng)成設(shè)計(jì)字段名稱不一致且需要呈現(xiàn)的,如果信息SeriesInfo可以命名中編寫代碼去實(shí)現(xiàn),便于以后程序維護(hù)。word編輯文檔.9其他9.1類型轉(zhuǎn)換1、盡量避免強(qiáng)制類型轉(zhuǎn)換。2、如果不得不做類型轉(zhuǎn)換,盡量用顯式方式。9.2錯(cuò)誤與提示W(wǎng)rong.aspx以及JavaScript腳本編寫的對(duì)數(shù)據(jù)及操作的錯(cuò)誤驗(yàn)證要有返回按鈕。2、權(quán)限驗(yàn)證錯(cuò)誤頁(yè)面,要有返回按鈕。3、錯(cuò)誤頁(yè)面的信息提示要簡(jiǎn)明、扼要,表述客戶可以理解的,開發(fā)人員明確錯(cuò)誤原因的。9.3代碼問題匯總1.命名陷阱從名字看是引導(dǎo)走向A,而實(shí)際上引導(dǎo)的方向卻是A的相反方向,挖著坑讓人跳.比如:來源于BLL.WholesaleGatheringInfo.csboolisPoised=(gg.has.WholesaleGatheringState&&gg.WholesaleGatheringState!=ST.Poised);看名字isPoised表示“已沖紅”的意思,而繼續(xù)仔細(xì)看代碼,卻驚奇的發(fā)現(xiàn)它表達(dá)的是“不是沖紅”的意思,如此命名一不小心就引導(dǎo)人犯錯(cuò)誤。2.偷懶設(shè)計(jì)加一個(gè)字段就可以解決的問題,卻要用另一種危險(xiǎn)的設(shè)計(jì)。比如:BookStorage圖書庫(kù)存期初的存儲(chǔ),完全可以在圖書庫(kù)存表加一個(gè)字段存儲(chǔ)期初值,而目前卻在圖書庫(kù)存里單獨(dú)加一條數(shù)據(jù)記錄來存儲(chǔ)期初(用修裝數(shù)量等于-1了怎么辦?word編輯文檔.3.捉迷藏存儲(chǔ)大家都熟悉的地方需要的時(shí)候才容易找到。比如:來自PrintFormInfo.cs方法BookProductionStorageIn表示的是“生產(chǎn)樣書單入庫(kù)”的操作怎么放到印制單操作類里去了,這讓同事怎么找?4.重復(fù)制造輪子相同功能的相同方法何必重復(fù)寫,框架提供了經(jīng)過測(cè)試的方法不用。增加維護(hù)工作量,還容易產(chǎn)生BUG,輪子已經(jīng)制造完成就不要再制造重復(fù)的。5.越描越黑比如:“類別”還有顯示值是空的設(shè)置項(xiàng)?這是開發(fā)人員寫的代碼把“請(qǐng)選擇”存蒙蔽大家的眼睛。6.硬代碼錯(cuò)誤有時(shí)候非常難發(fā)現(xiàn),大量奇怪的問題都是來源于硬代碼導(dǎo)致。比如:Session命名不定義直接引用等word編輯文檔.大量的這類問題。7、其他未列問題;10簡(jiǎn)版要求10.1編碼要求1、禁止使用縮寫命名,國(guó)際通用的除外。如:不允許把ProjectId命名成pid等。2、用詞要正規(guī),簡(jiǎn)潔,恰當(dāng),不能用漢語拼音,編碼風(fēng)格一致,表達(dá)意思易懂。UTF-8帶簽名格式保存,防止出現(xiàn)亂碼情況4、不允許寫硬代碼,都在常量類中定義再引用不允許:if(bk.BookType=1){……..}推薦:if(bk.BookType=MagicNumber.BOOKTYPE_THEONE){……..}5、涉及Sql語句編寫的地方如果有參數(shù)要傳遞,必須把Sql語句參數(shù)化,防止Sql注入。不允許:select*fromBookwhereBookName=’張三’推薦:select*fromBookwhereBookName=@Bookname,其中word編輯文檔.@Bookname的值為’張三’Sql原始列名大小寫必須和數(shù)據(jù)庫(kù)一樣。錯(cuò)誤:SelectprojectidfromProjectpj,Bookbkwherepj.BookId=bk.BookId正確:Selectpj.ProjectIdfromProjectpj,Bookbkwherepj.BookId=bk.BookId7、代碼注釋要簡(jiǎn)潔準(zhǔn)確,格式符合要求。對(duì)外公開的方法(類等):///<summary>///創(chuàng)建待辦全局?jǐn)?shù)據(jù),創(chuàng)建前會(huì)自動(dòng)檢測(cè)全局?jǐn)?shù)據(jù)中是否已存在的相同主鍵的紀(jì)錄///如果存在將先刪

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論