1.? 命名規(guī)范
a) 類
【規(guī)則1-1】使用Pascal規(guī)則命名類名,即首字母要大寫。
eg:
Class Test
{
? ? ...
}
【規(guī)則1-2】使用能夠反映類功能的名詞或名詞短語命名類。
【規(guī)則1-3】不要使用“I”、“C”、“_”等特定含義前綴。
【規(guī)則1-4】自定義異常類應以Exception結(jié)尾。
eg:
Class TestException
{
? ? ...
}
【規(guī)則1-5】文件名要能反映類的內(nèi)容,最好是和類同名。
b) 類字段(類成員)
【規(guī)則2-1】用camel規(guī)則來命名類成員變量名稱,即首單詞(或單詞縮寫)小寫。
【規(guī)則2-2】類字段變量名前可加“_”前綴。
【規(guī)則2-3】堅決禁止在普通變量前加“m_”(這是VC老命名規(guī)則)。
eg:
Class Test
{
? ? privatestring myName;
? ? privatestring _myCoCo;
? ? ...
}
c)方法
【規(guī)則3-1】方法名采用Pascal規(guī)則,第一個字符要大寫。
【規(guī)則3-2】方法名應使用動詞或動詞短語。
【規(guī)則3-3】類中訪問修飾符或功能相同的方法應該放在一起, 且公共或?qū)崿F(xiàn)接口的方法在前。
eg:
Class Test
{
? ? ? ...
? ? ? publicvoid GetData(...)
? ? ? {
? ? ? ? ...
? ? ? }
? ? ? privatevoid GetName(...)
? ? ? {
? ? ? ? ...
? ? ? }
? ? ? privatestatic void GetCount(...)
? ? ? {
? ? ? ? ...
? ? ? }
}
? d)屬性
? ? ? 【規(guī)則4-1】使用名詞定義屬性,屬性使用Pascal規(guī)則,首字符大寫
? ? ? 【規(guī)則4-2】屬性和相應字段名稱要關聯(lián), 可以使用“重構(gòu)”菜單來生成屬性。
eg:
Class Test
{
? private string myName;
? public string MyName
? {
? ? ? set
? ? ? {
? ? ? ? myName = Value;
? ? ? }
? ? ? get
? ? ? {
? ? ? ? return myName;
? ? ? }
? }
}
? e)參數(shù)
? ? ? 【規(guī)則5-1】參數(shù)采用camel規(guī)則命名,且首字符小寫。
? ? ? 【規(guī)則5-2】使用描述性參數(shù)名稱,參數(shù)名稱應當具有最夠的說明性。
? ? ? 【規(guī)則5-3】不要給參數(shù)加匈牙利語類型表示法的前綴。
? ? ? 【規(guī)則5-4】檢查方法所有輸入?yún)?shù)的有效性。
? ? ? eg:
? ? ? ClassTest
? ? ? {
? ? ? ? public void GetData(string name,string strFlag)
? ? ? ? {
? ? ? ? ? ? ...
? ? ? ? }
? ? ? }
? f)常量
? ? ? 【規(guī)則6-1】只讀常量使用Pascal命名規(guī)則,即首字母大寫。
? 【規(guī)則6-2】枚舉名使用Pascal規(guī)則命名,枚舉成員本質(zhì)屬于常量,命名規(guī)則同上。
? ? ? 【規(guī)則6-3】枚舉值從小到大順序定義。
? ? ? 【規(guī)則6-4】靜態(tài)字段或?qū)傩圆捎肞ascal規(guī)則,即首字符大寫。
? ? ? eg:
? ? ? ClassTest
? ? ? {
? ? ? ? public const double Pi = 3.14159365753;
? ? ? ? private readonly double Pai = 3.14159365753;
? ? ? }
? g)接口
? ? ? 【規(guī)則7-1】接口定義使用Pascal規(guī)則,且必須以大寫“I”開頭。
? ? ? 【規(guī)則7-2】接口名稱要有意義,中間不要有下劃線“_”等字符。
? 【規(guī)則7-3】如果類實現(xiàn)了接口,名稱盡量和接口相同, 只是省掉“I”字符。
? eg:注意這里的接口修飾符只能用public和internal
? interfaceITest
? {
? ? ? ...
? }
? h)事件
? ? ? 【規(guī)則8-1】委托名稱采用Pascal規(guī)則,即首字符大寫。
? 【規(guī)則8-2】定義事件的委托要使用EventHandler后綴,且包括sender和e兩個參數(shù)。
? 【規(guī)則8-3】事件用到的參數(shù),名稱要帶EventArgs后綴。
? eg:
? ClassTest
? {
? ? ? private delegate void DoTask();
? ? ? private event DoTask DoTaskEventHandler;
? ? ? private event DoTask DoTaskEventHandler(Object sender,EventArgse);
? ? ? private event DoTaskDoTaskEventHandler2(string? strEventArgs)
? ? ? {
? ? ? ? ...
? ? ? }
? ? ? ...
? }
i) 命名空間
【規(guī)則9-1】命名空間名稱采用Pascal規(guī)則,且首字符大寫。
【規(guī)則9-2】命名空間名稱盡量反映其內(nèi)容所提供的整體功能。
eg:
namespace MyTest
{
? ? ? ClassTest
? ? {
? ? ? ...
? ? }
? ? ...
}
2.? 注釋規(guī)范
a)文件頭部注釋
【規(guī)則1-1】文件都包含文件頭, 要說明文件名、作者、創(chuàng)建時間、變更記錄。
? ? ? 【規(guī)則1-2】推薦采用.NET形式書寫頭部注釋。(待考查)
? b)類及其成員注釋
? ? ? 【規(guī)則2-1】對方法和類使用“///”三斜線注釋。
? 【規(guī)則2-2】代碼行文注釋采用“//”和“/**/”進行,應該盡量說明問題。
3.行文規(guī)范
? a)縮寫規(guī)范
? ? ? 【規(guī)則1-1】標識符應當直觀可望文知意,不提倡使用任何縮寫。
? 【規(guī)則1-2】字符串變量推薦是用“str”或“s”開頭,采用string.Empty來初始化。
? 【規(guī)則1-3】普通對象可以以“obj”開頭。
? 【規(guī)則1-4】縮寫可自行定義,一般取單詞的前/后字符組成,以含義直觀為準則。
? 【規(guī)則1-5】一般情況下不要讓縮寫破壞標識符的含義。
b)排版
? 【規(guī)則2-1】每行語句至少占一行,如果語句過長(超過一屏),則該語句斷為兩行顯示。
? 【規(guī)則2-2】把相似的內(nèi)容放在一起,比如字段、屬性、方法、事件等,使用“#region--#endregion”命令分組。
? 【規(guī)則2-3】多個程序元素進行對等操作時, 操作符之前、之后或者前后都要加空格。
? 【規(guī)則2-4】每個方法的源程序行數(shù)原則上應該少于200行。(如果超過過多,則需要另寫一方法)
? 【規(guī)則2-5】語句嵌套層次不得超過3層。
? 【規(guī)則2-6】避免相同的代碼段在多個地方出現(xiàn)。(盡量避免代碼重復,能復用則復用)
c)語句結(jié)構(gòu)
? 【規(guī)則3-1】如果使用了異常結(jié)構(gòu),一定要處理異常, 一般是要寫日志文件。
? 【規(guī)則3-2】分支語句不應該使用復雜長條件, 應該將長條件封裝成方法。
? 【規(guī)則3-3】switch語句,case后面必須接break。
? 【規(guī)則3-4】禁止使用goto語句進行跳轉(zhuǎn)。
? 【規(guī)則3-5】行文中嚴禁出現(xiàn)“魔數(shù)”,特定含義的常數(shù)必須定義成枚舉或常量。
? 【規(guī)則3-6】不同類型的操作符混合使用時,使用括號給出優(yōu)先級。
? 【規(guī)則3-7】不允許使用復雜的操作符組合等。
? 【規(guī)則3-8】循環(huán)、判斷語句的程序塊部分用花括號括起來, 即使只有一條語句。(return;待議)
? 【規(guī)則3-9】在switch語句中總是要有default字句,建議使用斷言。
? 【規(guī)則3-10】每個類和方法完成單一的功能,不設計多用途面面俱到的類或方法。
? 【規(guī)則3-11】嚴禁使用未經(jīng)初始化的變量,變量通常使用構(gòu)造方法來初始。
d)代碼縮進
? 【規(guī)則4-1】碰到大括號要換行。
? 【規(guī)則4-2】不允許使用Java中的括號換行規(guī)范。
e)大小寫
? 【規(guī)則5-1】不要創(chuàng)建名稱相同,但大小寫區(qū)別的任何元素。
? 【規(guī)則5-2】應當大寫僅有兩個字符的縮寫。(如果只有兩個字符,則都大寫)
? 【規(guī)則5-3】不要把易混淆的數(shù)字和字符放在一起。
? 【規(guī)則5-4】使用英文命名標識符。
f)重名規(guī)范
? 【規(guī)則6-1】不允許變量名、類名、屬性名、 方法名等與系統(tǒng)標識符重名。(系統(tǒng)標識符見附表)
g)SQL編碼規(guī)范
? 【規(guī)則7-1】SQL語句全部大寫。(本人的習慣是小寫,為了性能,最好是大寫,我自己也得把習慣改改咯,哈哈哈)
? 【規(guī)則7-2】對較為復雜的SQL語句加上注釋,說明其功能。
? 【規(guī)則7-3】連接符OR、IN、AND、以及=、<=、>=等前后加空格。
? 【規(guī)則7-4】使用明確的列代替 SELECT *。
h)軟件架構(gòu)
? 【規(guī)則8-1】數(shù)據(jù)庫中每一張表對應一個實體類/數(shù)據(jù)傳輸對象(DTO)。
? 【規(guī)則8-2】實體類名稱使用表名,也可帶有Dto后綴。
? 【規(guī)則8-3】三層架構(gòu)應當合理使用,不應生搬硬套。
? 【規(guī)則8-4】三層架構(gòu)元素推薦使用后綴:
? ? ? 數(shù)據(jù)傳輸對象? ? ? ? XxxxDto
? ? ? DAO工廠? ? ? ? ? ? XxxDAOFactory
? ? ? DAO接口? ? ? ? ? ? IXxxxDAO
? ? ? 服務接口? ? ? ? ? IxxxxService
? ? ? DAO的數(shù)據(jù)庫實現(xiàn)? ? XxxxDAOOracle/XxxxDAOInfomix
? ? ? 業(yè)務邏輯? ? ? ? ? XxxxManager
i)系統(tǒng)
? 【規(guī)則9-1】在我國內(nèi)不建議隨便使用設計模式等代碼模式,因為并不流行。
? 【規(guī)則9-2】系統(tǒng)輸入、資源操作(如內(nèi)存分配、文件及目錄操作)、網(wǎng)絡操作(如通信、調(diào)用等)、任務間的操作(如通信、調(diào)用等)時必須進行錯誤、超時、或則異常處理。
? 【規(guī)則9-3】模塊的編寫應有完善的測試方面的考慮。
附表
表1 各種類型命名規(guī)范總結(jié)
類型命名規(guī)則注意事項實例
類或結(jié)構(gòu)Pascal首字符大寫HttpContext
接口Pascal加前綴IIDataAdaper
枚舉名Pascal首字符大寫CommandType
枚舉值Pascal首字符大寫CommandType.Text
事件Pascal首字符大寫SelectedIndexChanged
自定義異常Pascal加后綴ExceptionArgumentException
類公共字段Pascal首字符大寫MaxValue(或_MaxValue)
方法Pascal首字符大寫ToString()
命名空間Pascal首字符大寫System.Xml
屬性Pascal首字符大寫B(tài)ackColor
保護或私有字段Camel首字符小寫myVariable
參數(shù)Camel首字符小寫cmdText
表2 數(shù)據(jù)類型縮寫規(guī)則
數(shù)據(jù)類型數(shù)據(jù)類型縮寫標準命名實例
Boolb/isIsVisable
FloatFFPrice
DoubleDDPrice
UnitUUAge
IntIINumber
CharChChCode
ByteBtBtImages
StringStrStrName
StructStStStudent
WindowWndWndMain
ArrayListLstLstStudents
Array/strong>ArrArrStudents
HashtableHtHtstudents
表3 Windows控件縮寫規(guī)則
控件類型控件名稱控件類型縮寫實例
Label標簽框LblLblMessage
LinkLabel超鏈接標簽框LlblLlblToday
Button按鈕BtnBtnSave
TextBox文本框TxtTxtName
MainMenu菜單欄MmnuMmnuFile
CheckBox多選框ChkChkStock
RadioButton單選框RbtnRbtnSelected
GroupBox組合框GbxGbxMain
PictureBox圖片框PicPicImage
Panel PnlPnlBody
DataGrid DgrdDgrdView
ListBox LstLstProducts
CheckedListBox ClstClstChecked
ComboBox組合框CboCboMenu
ListView列表視圖LvwLvwBrowser
TreeView樹視圖TvwTvwType
TabControl TctlTctlSelected
DateTimePicker DtpDtpStartDate
HscrollBar HsbHsbImage
VscrollBar VsbVsbImage
Timer TmrTmrCount
ImageList IlstIlstImage
ToolBar工具欄TlbTlbManage
StatusBar狀態(tài)欄StbStbFootPrint
OpenFileDialog OdlgOdlgFile
SaveFileDialog SdlgSdlgSave
FoldBrowserDialog FbdlgFbdlgBrowser
FontDialog FdlgFdlgFoot
ColorDialog CdlgCdlgColor
PrintDialog PdlgPdlgPrint
表4 數(shù)據(jù)庫對象縮寫規(guī)范
數(shù)據(jù)庫對象名稱簡寫實例
Connection ConConNorthwind
Command CmdCmdReturnProducts
Parameter ParmParmProductID
DataAdapter DapDapProducts
DataReader DtrDtrProducts
DataSet DsDsNorthwind
DataTable DtDtProduct
DataRow DrowDrowRow
DataColumn DcolDcolProductID
DataRelation DrlDrlMasterDetail
DataView DvwDvwFilteredProducts