




已閱讀5頁(yè),還剩6頁(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)介
寶橋科技C#編程規(guī)范寶橋科技編程規(guī)范Version 225一、本規(guī)范版本變化1二、概述1三、版本號(hào)命名規(guī)則1四、命名規(guī)范1五、代碼外觀3六、程序注釋4七、控件命名規(guī)則5八、界面設(shè)計(jì)規(guī)范6九、數(shù)據(jù)庫(kù)命名規(guī)則(暫定)6十、附錄9一、 本規(guī)范版本變化Version 129 yux 完成Version 130 增加了數(shù)據(jù)庫(kù)命名規(guī)則、界面設(shè)計(jì)規(guī)范。Version 205 數(shù)據(jù)庫(kù)部分細(xì)節(jié)改動(dòng)。Version 225 按鈕命名細(xì)節(jié)改動(dòng)。二、 概述規(guī)范制定原則1 方便代碼的交流和維護(hù)。2 不影響編碼的效率,不與大眾習(xí)慣沖突。3 使代碼更美觀、閱讀更方便。4 使代碼的邏輯更清晰、更易于理解。術(shù)語(yǔ)定義Pascal 大小寫(xiě)將標(biāo)識(shí)符的首字母和后面連接的每個(gè)單詞的首字母都大寫(xiě)??梢詫?duì)三字符或更多字符的標(biāo)識(shí)符使用Pascal 大小寫(xiě)。例如: BackColorcamel 大小寫(xiě)標(biāo)識(shí)符的首字母小寫(xiě),而每個(gè)后面連接的單詞的首字母都大寫(xiě)。例如: backColor三、 版本號(hào)命名規(guī)則版本號(hào)分為4段,前兩段為主版本號(hào)和輔版本號(hào),定義了軟件的版本。第3段為設(shè)定版本時(shí)的年份,2009年及以前為一位數(shù)字,2010年以后為兩位數(shù)字。第4段為設(shè)定版本時(shí)的日期,用4位數(shù)字表示,如0129表示1月29日如129,含義為版本1.0,2009-1-29最終發(fā)布。四、 命名規(guī)范1、 命名規(guī)則命名時(shí)盡可能使用英文的全稱(chēng),尤其是類(lèi)名和接口名。命名時(shí)盡可能不用下劃線,除非全部大寫(xiě)。命名時(shí)少用s,如使用user而不要用users,集合除外。在面向?qū)ο蟮恼Z(yǔ)言中,在類(lèi)屬性的名稱(chēng)中包含類(lèi)名是多余的,如不應(yīng)該使用Book.BookTitle。而是應(yīng)該使用 Book.Title。布爾變量名應(yīng)該包含 Is,這意味著 Yes/No 或 True/False 值,如 fileIsFound即使對(duì)于可能僅出現(xiàn)在幾個(gè)代碼行中的生存期很短的變量,仍然使用有意義的名稱(chēng)。僅對(duì)于短循環(huán)索引使用單字母變量名,如 i 或 j?;蛘邔?xiě)清楚注釋??赡艿那闆r下,盡量不要使用原義數(shù)字或原義字符串,如 For i = 1 To 7。而是使用命名常數(shù),如 For i = 1 To NUM_DAYS_IN_WEEK 以便于維護(hù)和理解。命名空間和類(lèi)不能使用同樣的名字。例如,有一個(gè)類(lèi)被命名為Debug后,就不要再使用Debug作為一個(gè)名稱(chēng)空間名。在適當(dāng)?shù)牡胤?,使用?fù)合單詞命名派生的類(lèi)。如ApplicationException 是從名為 Exception 的類(lèi)派生的類(lèi)。接口開(kāi)始字母一定為大寫(xiě)的I,而后跟隨Pascal方式的接口名,如 IPersistable。而IdentityStore也是合適的類(lèi)名或其它名稱(chēng),因?yàn)椴⒉粫?huì)混淆。對(duì)于參數(shù),不需要添加str或int等前綴后綴,而應(yīng)該使用可以描述參數(shù)意義的名稱(chēng)。例如:string Format(string format, args() As object)Public的字段用Pascal命名方式,而private,protect字段用camel命名。屬性的命名盡可能與對(duì)應(yīng)的字段同名,用大小寫(xiě)來(lái)區(qū)分。集合的命名時(shí),盡可能使用復(fù)數(shù)。2、 大小寫(xiě)規(guī)則基本原則:內(nèi)部封裝起來(lái)的私有字段、參數(shù)、變量為camel命名方法,其它的為Pascal命名方法。常數(shù)使用全部大寫(xiě)字母,單詞之間使用下劃線分隔。常用計(jì)算機(jī)通用單詞縮寫(xiě)可寫(xiě)成大寫(xiě),如IO,UI,TCP,CRM等。標(biāo)識(shí)符大小寫(xiě)示例常數(shù)全部大寫(xiě)NUM_DAYS_IN_WEEK 可以使用下劃線分隔類(lèi)PascalAppDomain枚舉類(lèi)型PascalErrorLevel枚舉值PascalFatalError事件PascalValueChange接口PascalIDisposable 注意 總是以 I 前綴開(kāi)始。方法PascalToString命名空間PascalSystem.Drawing屬性PascalBackColor公共字段PascalRedValue 注意 很少使用。屬性?xún)?yōu)于使用公共實(shí)例字段。只讀靜態(tài)字段PascalRedValue私有字段camelredValue參數(shù)cameltypeName方法內(nèi)的變量camelbackColor3、 DotNet中的關(guān)鍵字盡可能不要用作變量名詳見(jiàn)附錄,雖然多數(shù)為的關(guān)鍵字,但考慮到.net框架的通用性,建議盡量不用。五、 代碼外觀1、 列寬代碼列寬控制在110字符左右,也就是大約屏幕的4/3寬。如果太長(zhǎng)需要換行,則從第二行起向后縮進(jìn)。如:string inserString = Insert Into TableName (username,password,email,sex,address)+ Values(張三,123546,123,男,體育路11號(hào));2、 縮進(jìn) 縮進(jìn)應(yīng)該是每行一個(gè)Tab(4個(gè)空格),按照VS2005環(huán)境的默認(rèn)生成格式進(jìn)行縮進(jìn)。3、 空行空行是為了將邏輯上相關(guān)聯(lián)的代碼分塊,以便提高代碼的可閱讀性。在以下情況下使用兩個(gè)或更多空行1、接口和類(lèi)的定義之間。2、枚舉和類(lèi)的定義之間。3、類(lèi)與類(lèi)的定義之間。 在以下情況下使用一個(gè)空行1、 屬性與屬性之間、方法與方法之間。2、 屬性、方法、字段相互之間。3、 方法中變量聲明與語(yǔ)句之間。4、 方法中不同的邏輯塊之間。5、 方法中的返回語(yǔ)句與其他的語(yǔ)句之間。6、 注釋與它注釋的語(yǔ)句間不空行,但與其他的語(yǔ)句間空一行。4、 花括號(hào) - 1、 左花括號(hào) “” 放于關(guān)鍵字或方法名的下一行并與之對(duì)齊,同時(shí)與右花括號(hào)“”對(duì)齊。如 if (condition) 2、 if、while、do語(yǔ)句后一定要使用“”,即使“”號(hào)中為空或只有一條語(yǔ)句,除非不加“”能提高程序的可讀性。如 if (someValue = 1) someValue = 2; 5、 代碼塊在代碼中點(diǎn)擊右鍵插入代碼段Visual C#。(提示:大多數(shù)情況下,輸入關(guān)鍵字后按TAB鍵即可自動(dòng)生成代碼,如try+TAB)與VS2005環(huán)境自動(dòng)生成的代碼塊保持一致。6、 重構(gòu)多使用VS2005開(kāi)發(fā)環(huán)境提供的代碼重構(gòu)功能:例如在類(lèi)的某一個(gè)字段上點(diǎn)擊右鍵重構(gòu)封裝字段。六、 程序注釋1、 原則 每一個(gè)文件,每一個(gè)類(lèi),每一個(gè)類(lèi)的public方法必須填寫(xiě)正確的注釋。 如果進(jìn)行了修改,則在文件上方填寫(xiě)相應(yīng)的修改信息,并在代碼中注出修改的地方和修改的原因。如果修改的是其它人的模塊,則必須填寫(xiě)修改人的標(biāo)識(shí)。 修改代碼時(shí),總是使代碼周?chē)淖⑨尡3肿钚隆?避免雜亂的注釋?zhuān)缫徽行翘?hào)。而是應(yīng)該使用空白將注釋同代碼分開(kāi)。 避免在塊注釋的周?chē)由嫌∷⒖?。這樣看起來(lái)可能很漂亮,但是難于維護(hù)。 如果需要用注釋來(lái)解釋復(fù)雜的代碼節(jié),請(qǐng)檢查此代碼以確定是否應(yīng)該重寫(xiě)它。盡一切可能不注釋難以理解的代碼,而應(yīng)該重寫(xiě)它。盡管一般不應(yīng)該為了使代碼更簡(jiǎn)單以便于人們使用而犧牲性能,但必須保持性能和可維護(hù)性之間的平衡。 在編寫(xiě)代碼時(shí)就注釋?zhuān)驗(yàn)橐院蠛芸赡軟](méi)有時(shí)間這樣做。另外,如果有機(jī)會(huì)復(fù)查已編寫(xiě)的代碼,在今天看來(lái)很明顯的東西六周以后或許就不明顯了。 注釋代碼中不十分明顯的任何內(nèi)容。 為了防止問(wèn)題反復(fù)出現(xiàn),對(duì)錯(cuò)誤修復(fù)和解決方法代碼總是使用注釋?zhuān)绕涫窃趫F(tuán)隊(duì)環(huán)境中。 對(duì)由循環(huán)和邏輯分支組成的代碼使用注釋?zhuān)貏e是循環(huán)邊界條件的說(shuō)明。 2、 文件注釋commFile導(dǎo)入預(yù)定義好的commFile.snippet(參見(jiàn)附錄)。文件注釋?xiě)?yīng)該放在using段之后類(lèi)之前輸入commFile,按TAB鍵/* * Copyright (C) 寶橋科技版權(quán)所有 * * 創(chuàng)建標(biāo)識(shí):owne20090101 * * 文件功能描述:對(duì)此文件實(shí)現(xiàn)功能的描述 * * 修改標(biāo)識(shí):修改人日期 * 修改描述: * */3、 類(lèi)注釋在類(lèi)的上方輸入/,使用XML格式的文檔說(shuō)明。例如 / / 根據(jù)進(jìn)程名來(lái)判斷當(dāng)前程序運(yùn)行的個(gè)數(shù) / public static class AppInstance 4、 方法注釋在方法的上方輸入/,使用XML格式的文檔說(shuō)明。例如: / / 讀取INI文件中的值 / / INI文件中的段 / INI文件中的鍵值 / 返回字符串值,如果沒(méi)有此值返回空字符串 / / string s=INIClass.INIReadValue(DataBase,Server) / public string INIReadValue(string section, string key) 方法中的每一個(gè)參數(shù)及返回值則必須寫(xiě)清楚用途,尤其是public的方法。比較難以使用或難于理解的方法,需要使用標(biāo)簽來(lái)寫(xiě)下一個(gè)簡(jiǎn)單的使用范例。七、 控件命名規(guī)則命名方法:控件名簡(jiǎn)寫(xiě)+英文描述,英文描述首字母大寫(xiě)Panel,Label等程序不操作的控件可以不命名,使用缺省名稱(chēng)。下面是部分常用控件的縮寫(xiě):10控件名簡(jiǎn)寫(xiě)FormfrmButtonbtnCheckBoxchkTextBoxtxtLabellblListBoxlstListViewlstvComboBoxcmbDateTimePickerdtpCalendercldMonthCalendarmcldPictureBoxpicImageimgRadioButtonrdoTreeViewtvNumericUpDownupdnPanelpnlMenuStripmenuContextMenuStripcmenuDataSetdsDataGridViewdgvImageListimglstToolStriptsToolStripButtontsb八、 命名空間(NameSpace)命名規(guī)范及項(xiàng)目組織形式1、九、 界面設(shè)計(jì)規(guī)范1、 常用按鈕/快捷鍵命名按鈕中文名按鈕名快捷鍵增加(A)btnAddA修改(E)btnEditE刪除(D)btnDelD保存(S)btnSaveS取消(C)btnCancelC確定(O)btnOkO應(yīng)用(Y)btnApplyY退出(X)btnExitX關(guān)閉(C)btnCloseC十、 數(shù)據(jù)庫(kù)命名規(guī)則(暫定)所有數(shù)據(jù)庫(kù)、表、字段、視圖、存儲(chǔ)過(guò)程等的標(biāo)識(shí)命名,除了前綴外,全部遵守Pascal命名規(guī)則,而所有的前綴則全部小寫(xiě)。禁止使用中文命名1、 數(shù)據(jù)庫(kù)(Database)的定義數(shù)據(jù)庫(kù)名稱(chēng) = 數(shù)據(jù)庫(kù)內(nèi)容標(biāo)識(shí)2、 表(Table)的定義命名應(yīng)盡量反映存儲(chǔ)的數(shù)據(jù)內(nèi)容,并且盡可能不使用復(fù)數(shù)。例如使用Product,而不是Products。如果表名與SQL關(guān)鍵字沖突,考慮加上Tbl后綴。例如:UserTbl,而不是User表名稱(chēng) = 表名前綴 + 表內(nèi)容標(biāo)識(shí)如ClientInfo相關(guān)聯(lián)的一系的表以ci作為前綴,即有表名:ciHistory,ciContact,ciBusiness3、 列/字段(Field)的定義列名稱(chēng)命名采用英文單詞或縮寫(xiě),英文單詞只來(lái)自于具體業(yè)務(wù)定義,盡量表達(dá)清楚含義。例如:AddressIDPostalCode盡量避免使用拼音命名,如果不可避免,對(duì)于比較短的列名,采用拼音全寫(xiě),如果拼音列名比較復(fù)雜,可以采用首個(gè)字用全拼,其它字用首字母大寫(xiě)表示。例如:寧波 Ningbo經(jīng)營(yíng)方式 JingYFS主鍵一般可以命名為+ID,如Product表的主鍵命名名ProductID。使用單數(shù)名稱(chēng),而不是復(fù)數(shù)名稱(chēng)4、 視圖(View)的命名視圖的名稱(chēng) = v + 視圖內(nèi)容標(biāo)識(shí)如 :vUserTbl5、 觸發(fā)器名觸發(fā)類(lèi)型InsertDeleteUpdate觸發(fā)標(biāo)識(shí)idu觸發(fā)名= tr + 觸發(fā)標(biāo)識(shí) + 相應(yīng)的表名如:triClient,trdClient。6、 變量名Pascal命名方式,如EmployeeName。7、 其它命名規(guī)則(暫定)內(nèi)容前綴示例存儲(chǔ)過(guò)程 Store ProcedureprprDeleteTerminatedReps用戶函數(shù)FunctionfnfnGetPY其它如主鍵、索引等,暫不作要求8、 SQL語(yǔ)句的編寫(xiě)規(guī)范(簡(jiǎn))數(shù)據(jù)庫(kù)中存儲(chǔ)過(guò)程和觸發(fā)器中涉及大量的SQL語(yǔ)句,對(duì)SQL語(yǔ)句的編寫(xiě)規(guī)范如下:關(guān)鍵字大寫(xiě):在SQL語(yǔ)句的編寫(xiě)中,凡是SQL語(yǔ)句的關(guān)鍵字一律大寫(xiě),如:SELECT、ORDER BY、 GROUP BY、 FROM、WHERE、 UPDATE、 INSERT INTO、 SET、 BEGIN、 END . 比較一下:SELECT ID,UserName FROM UserTbl WHERE ID=5 和 select ID,UserName from UserTbl where ID=5適當(dāng)?shù)目s進(jìn)準(zhǔn)確而精煉的注釋9、 常用字段命名這里的常用字段是指在建表時(shí)頻繁使用的表名或列名,下表對(duì)常用字段進(jìn)行建議性定義,列名稱(chēng)數(shù)據(jù)類(lèi)型說(shuō)明CreatedDatedatetime紀(jì)錄創(chuàng)建日期,一般使用GETDATE()自動(dòng)生成ModifiedDatedatetime紀(jì)錄最后修改日期,首次使用GETDATE()DeletedDatedatetime記錄刪除(標(biāo)記刪除)日期StartDatedatetime開(kāi)始日期EndDatedatetime結(jié)束日期StartTimedatetime開(kāi)始時(shí)間EndTimedatetime結(jié)束時(shí)間IDint使用ID而不是Id或id。一般為自增長(zhǎng)主鍵列Codestring字符串類(lèi)型的代碼,如PostCode,ProductCodeRowGuiduniqueidentifier唯一標(biāo)識(shí)行的ROWGUIDCOL號(hào),用于支持合并復(fù)制ParentIDint父IDStatusint狀態(tài)十一、 附錄1、 commFile.snippet Expansion 文件注釋 commFile 關(guān)于本文件的注釋說(shuō)明 bqkj yux 20090129 owner 創(chuàng)建人 owne20090101 fileComment 文件功能描述 對(duì)此文件實(shí)現(xiàn)功能的描述 2、 DOTNET關(guān)鍵字列表AddHandlerAddressOfAliasAndAnsiAsAssemblyAutoBaseBooleanByRefByteByValCallCaseCatchCBoolCByteCcharCDateCDecCDblCharCintClassCLngCObjConstCshortCSngCStrCTypeDateDecimalD
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 果樹(shù)認(rèn)種合同范本
- 樹(shù)木買(mǎi)賣(mài)砍伐合同范本
- 采購(gòu)裝飾材料合同范本
- 融資正規(guī)居間合同范本
- 店鋪轉(zhuǎn)讓合同范本2015
- 2025年-貴州省建筑安全員-C證考試(專(zhuān)職安全員)題庫(kù)附答案
- 產(chǎn)品銷(xiāo)貨合同標(biāo)準(zhǔn)文本
- 廣東省黃埔區(qū)廣附2023-2024學(xué)年中考數(shù)學(xué)五模試卷含解析
- 劃線設(shè)備供貨合同標(biāo)準(zhǔn)文本
- 2025山西建筑安全員C證考試(專(zhuān)職安全員)題庫(kù)及答案
- 中國(guó)皮膚結(jié)核臨床診療專(zhuān)家共識(shí)(2024版)
- 國(guó)開(kāi)2024年秋《機(jī)電控制工程基礎(chǔ)》形考任務(wù)1-4
- 合理用藥管理制度
- 紅十字會(huì)突發(fā)事件應(yīng)急預(yù)案
- 守望(2022年湖北十堰中考語(yǔ)文試卷記敘文閱讀題及答案)
- GB 30254-2024高壓三相籠型異步電動(dòng)機(jī)能效限定值及能效等級(jí)
- 2024年保密知識(shí)測(cè)試試題帶答案(考試直接用)
- 少兒編程培訓(xùn)機(jī)構(gòu)規(guī)章制度
- 2024至2030年中國(guó)紫外光吸收劑行業(yè)市場(chǎng)發(fā)展現(xiàn)狀及潛力分析研究報(bào)告
- 重大事故隱患判定標(biāo)準(zhǔn)與相關(guān)事故案例培訓(xùn)課件
- 健身房財(cái)務(wù)管理概述
評(píng)論
0/150
提交評(píng)論