1. 命名規范
a) 類
【規則1-1】使用Pascal規則命名類名,即首字母要大寫。
eg:
Class Test
{
...
}
【規則1-2】使用能夠反映類功能的名詞或名詞短語命名類。
【規則1-3】不要使用“I”、“C”、“_”等特定含義前綴。
【規則1-4】自定義異常類應以Exception結尾。
eg:
Class TestException
{
...
}
【規則1-5】文件名要能反映類的內容,最好是和類同名。
b) 類字段(類成員)
【規則2-1】用camel規則來命名類成員變量名稱,即首單詞(或單詞縮寫)小寫。
【規則2-2】類字段變量名前可加“_”前綴。
【規則2-3】堅決禁止在普通變量前加“m_”(這是VC老命名規則)。
eg:
Class Test
{
privatestring myName;
privatestring _myCoCo;
...
}
c)方法
【規則3-1】方法名采用Pascal規則,第一個字符要大寫。
【規則3-2】方法名應使用動詞或動詞短語。
【規則3-3】類中訪問修飾符或功能相同的方法應該放在一起, 且公共或實現接口的方法在前。
eg:
Class Test
{
...
publicvoid GetData(...)
{
...
}
privatevoid GetName(...)
{
...
}
privatestatic void GetCount(...)
{
...
}
}
d)屬性
【規則4-1】使用名詞定義屬性,屬性使用Pascal規則,首字符大寫
【規則4-2】屬性和相應字段名稱要關聯, 可以使用“重構”菜單來生成屬性。
eg:
Class Test
{
private string myName;
public string MyName
{
set
{
myName = Value;
}
get
{
return myName;
}
}
}
e)參數
【規則5-1】參數采用camel規則命名,且首字符小寫。
【規則5-2】使用描述性參數名稱,參數名稱應當具有最夠的說明性。
【規則5-3】不要給參數加匈牙利語類型表示法的前綴。
【規則5-4】檢查方法所有輸入參數的有效性。
eg:
ClassTest
{
public void GetData(string
name,string strFlag)
{
...
}
}
f)常量
【規則6-1】只讀常量使用Pascal命名規則,即首字母大寫。
【規則6-2】枚舉名使用Pascal規則命名,枚舉成員本質屬於常量,命名規則同上。
【規則6-3】枚舉值從小到大順序定義。
【規則6-4】靜態字段或屬性采用Pascal規則,即首字符大寫。
eg:
ClassTest
{
public const double Pi = 3.14159365753;
private readonly double
Pai = 3.14159365753;
}
g)接口
【規則7-1】接口定義使用Pascal規則,且必須以大寫“I”開頭。
【規則7-2】接口名稱要有意義,中間不要有下划線“_”等字符。
【規則7-3】如果類實現了接口,名稱盡量和接口相同, 只是省掉“I”字符。
eg:注意這里的接口修飾符只能用public和internal
interfaceITest
{
...
}
h)事件
【規則8-1】委托名稱采用Pascal規則,即首字符大寫。
【規則8-2】定義事件的委托要使用EventHandler后綴,且包括sender和e兩個參數。
【規則8-3】事件用到的參數,名稱要帶EventArgs后綴。
eg:
ClassTest
{
private delegate void DoTask();
private event DoTask DoTaskEventHandler;
private event DoTask DoTaskEventHandler(Object sender,EventArgse);
private event DoTaskDoTaskEventHandler2(string
strEventArgs)
{
...
}
...
}
i) 命名空間
【規則9-1】命名空間名稱采用Pascal規則,且首字符大寫。
【規則9-2】命名空間名稱盡量反映其內容所提供的整體功能。
eg:
namespace MyTest
{
ClassTest
{
...
}
...
}
2. 注釋規范
a)文件頭部注釋
【規則1-1】文件都包含文件頭, 要說明文件名、作者、創建時間、變更記錄。
【規則1-2】推薦采用.NET形式書寫頭部注釋。(待考查)
b)類及其成員注釋
【規則2-1】對方法和類使用“///”三斜線注釋。
【規則2-2】代碼行文注釋采用“//”和“/**/”進行,應該盡量說明問題。
3.行文規范
a)縮寫規范
【規則1-1】標識符應當直觀可望文知意,不提倡使用任何縮寫。
【規則1-2】字符串變量推薦是用“str”或“s”開頭,采用string.Empty來初始化。
【規則1-3】普通對象可以以“obj”開頭。
【規則1-4】縮寫可自行定義,一般取單詞的前/后字符組成,以含義直觀為准則。
【規則1-5】一般情況下不要讓縮寫破壞標識符的含義。
b)排版
【規則2-1】每行語句至少占一行,如果語句過長(超過一屏),則該語句斷為兩行顯示。
【規則2-2】把相似的內容放在一起,比如字段、屬性、方法、事件等,使用“#region--#endregion”命令分組。
【規則2-3】多個程序元素進行對等操作時, 操作符之前、之后或者前后都要加空格。
【規則2-4】每個方法的源程序行數原則上應該少於200行。(如果超過過多,則需要另寫一方法)
【規則2-5】語句嵌套層次不得超過3層。
【規則2-6】避免相同的代碼段在多個地方出現。(盡量避免代碼重復,能復用則復用)
c)語句結構
【規則3-1】如果使用了異常結構,一定要處理異常, 一般是要寫日志文件。
【規則3-2】分支語句不應該使用復雜長條件, 應該將長條件封裝成方法。
【規則3-3】switch語句,case后面必須接break。
【規則3-4】禁止使用goto語句進行跳轉。
【規則3-5】行文中嚴禁出現“魔數”,特定含義的常數必須定義成枚舉或常量。
【規則3-6】不同類型的操作符混合使用時,使用括號給出優先級。
【規則3-7】不允許使用復雜的操作符組合等。
【規則3-8】循環、判斷語句的程序塊部分用花括號括起來, 即使只有一條語句。(return;待議)
【規則3-9】在switch語句中總是要有default字句,建議使用斷言。
【規則3-10】每個類和方法完成單一的功能,不設計多用途面面俱到的類或方法。
【規則3-11】嚴禁使用未經初始化的變量,變量通常使用構造方法來初始。
d)代碼縮進
【規則4-1】碰到大括號要換行。
【規則4-2】不允許使用Java中的括號換行規范。
e)大小寫
【規則5-1】不要創建名稱相同,但大小寫區別的任何元素。
【規則5-2】應當大寫僅有兩個字符的縮寫。(如果只有兩個字符,則都大寫)
【規則5-3】不要把易混淆的數字和字符放在一起。
【規則5-4】使用英文命名標識符。
f)重名規范
【規則6-1】不允許變量名、類名、屬性名、 方法名等與系統標識符重名。(系統標識符見附表)
g)SQL編碼規范
【規則7-1】SQL語句全部大寫。(本人的習慣是小寫,為了性能,最好是大寫,我自己也得把習慣改改咯,哈哈哈)
【規則7-2】對較為復雜的SQL語句加上注釋,說明其功能。
【規則7-3】連接符OR、IN、AND、以及=、<=、>=等前后加空格。
【規則7-4】使用明確的列代替 SELECT *。
h)軟件架構
【規則8-1】數據庫中每一張表對應一個實體類/數據傳輸對象(DTO)。
【規則8-2】實體類名稱使用表名,也可帶有Dto后綴。
【規則8-3】三層架構應當合理使用,不應生搬硬套。
【規則8-4】三層架構元素推薦使用后綴:
數據傳輸對象 XxxxDto
DAO工廠 XxxDAOFactory
DAO接口 IXxxxDAO
服務接口 IxxxxService
DAO的數據庫實現 XxxxDAOOracle/XxxxDAOInfomix
業務邏輯 XxxxManager
i)系統
【規則9-1】在我國內不建議隨便使用設計模式等代碼模式,因為並不流行。
【規則9-2】系統輸入、資源操作(如內存分配、文件及目錄操作)、網絡操作(如通信、調用等)、任務間的操作(如通信、調用等)時必須進行錯誤、超時、或則異常處理。
【規則9-3】模塊的編寫應有完善的測試方面的考慮。
a) 類
【規則1-1】使用Pascal規則命名類名,即首字母要大寫。
eg:
Class Test
{
...
}
【規則1-2】使用能夠反映類功能的名詞或名詞短語命名類。
【規則1-3】不要使用“I”、“C”、“_”等特定含義前綴。
【規則1-4】自定義異常類應以Exception結尾。
eg:
Class TestException
{
...
}
【規則1-5】文件名要能反映類的內容,最好是和類同名。
b) 類字段(類成員)
【規則2-1】用camel規則來命名類成員變量名稱,即首單詞(或單詞縮寫)小寫。
【規則2-2】類字段變量名前可加“_”前綴。
【規則2-3】堅決禁止在普通變量前加“m_”(這是VC老命名規則)。
eg:
Class Test
{
privatestring myName;
privatestring _myCoCo;
...
}
c)方法
【規則3-1】方法名采用Pascal規則,第一個字符要大寫。
【規則3-2】方法名應使用動詞或動詞短語。
【規則3-3】類中訪問修飾符或功能相同的方法應該放在一起, 且公共或實現接口的方法在前。
eg:
Class Test
{
...
publicvoid GetData(...)
{
...
}
privatevoid GetName(...)
{
...
}
privatestatic void GetCount(...)
{
...
}
}
d)屬性
【規則4-1】使用名詞定義屬性,屬性使用Pascal規則,首字符大寫
【規則4-2】屬性和相應字段名稱要關聯, 可以使用“重構”菜單來生成屬性。
eg:
Class Test
{
private string myName;
public string MyName
{
set
{
myName = Value;
}
get
{
return myName;
}
}
}
e)參數
【規則5-1】參數采用camel規則命名,且首字符小寫。
【規則5-2】使用描述性參數名稱,參數名稱應當具有最夠的說明性。
【規則5-3】不要給參數加匈牙利語類型表示法的前綴。
【規則5-4】檢查方法所有輸入參數的有效性。
eg:
ClassTest
{
public void GetData(string
name,string strFlag)
{
...
}
}
f)常量
【規則6-1】只讀常量使用Pascal命名規則,即首字母大寫。
【規則6-2】枚舉名使用Pascal規則命名,枚舉成員本質屬於常量,命名規則同上。
【規則6-3】枚舉值從小到大順序定義。
【規則6-4】靜態字段或屬性采用Pascal規則,即首字符大寫。
eg:
ClassTest
{
public const double Pi = 3.14159365753;
private readonly double
Pai = 3.14159365753;
}
g)接口
【規則7-1】接口定義使用Pascal規則,且必須以大寫“I”開頭。
【規則7-2】接口名稱要有意義,中間不要有下划線“_”等字符。
【規則7-3】如果類實現了接口,名稱盡量和接口相同, 只是省掉“I”字符。
eg:注意這里的接口修飾符只能用public和internal
interfaceITest
{
...
}
h)事件
【規則8-1】委托名稱采用Pascal規則,即首字符大寫。
【規則8-2】定義事件的委托要使用EventHandler后綴,且包括sender和e兩個參數。
【規則8-3】事件用到的參數,名稱要帶EventArgs后綴。
eg:
ClassTest
{
private delegate void DoTask();
private event DoTask DoTaskEventHandler;
private event DoTask DoTaskEventHandler(Object sender,EventArgse);
private event DoTaskDoTaskEventHandler2(string
strEventArgs)
{
...
}
...
}
i) 命名空間
【規則9-1】命名空間名稱采用Pascal規則,且首字符大寫。
【規則9-2】命名空間名稱盡量反映其內容所提供的整體功能。
eg:
namespace MyTest
{
ClassTest
{
...
}
...
}
2. 注釋規范
a)文件頭部注釋
【規則1-1】文件都包含文件頭, 要說明文件名、作者、創建時間、變更記錄。
【規則1-2】推薦采用.NET形式書寫頭部注釋。(待考查)
b)類及其成員注釋
【規則2-1】對方法和類使用“///”三斜線注釋。
【規則2-2】代碼行文注釋采用“//”和“/**/”進行,應該盡量說明問題。
3.行文規范
a)縮寫規范
【規則1-1】標識符應當直觀可望文知意,不提倡使用任何縮寫。
【規則1-2】字符串變量推薦是用“str”或“s”開頭,采用string.Empty來初始化。
【規則1-3】普通對象可以以“obj”開頭。
【規則1-4】縮寫可自行定義,一般取單詞的前/后字符組成,以含義直觀為准則。
【規則1-5】一般情況下不要讓縮寫破壞標識符的含義。
b)排版
【規則2-1】每行語句至少占一行,如果語句過長(超過一屏),則該語句斷為兩行顯示。
【規則2-2】把相似的內容放在一起,比如字段、屬性、方法、事件等,使用“#region--#endregion”命令分組。
【規則2-3】多個程序元素進行對等操作時, 操作符之前、之后或者前后都要加空格。
【規則2-4】每個方法的源程序行數原則上應該少於200行。(如果超過過多,則需要另寫一方法)
【規則2-5】語句嵌套層次不得超過3層。
【規則2-6】避免相同的代碼段在多個地方出現。(盡量避免代碼重復,能復用則復用)
c)語句結構
【規則3-1】如果使用了異常結構,一定要處理異常, 一般是要寫日志文件。
【規則3-2】分支語句不應該使用復雜長條件, 應該將長條件封裝成方法。
【規則3-3】switch語句,case后面必須接break。
【規則3-4】禁止使用goto語句進行跳轉。
【規則3-5】行文中嚴禁出現“魔數”,特定含義的常數必須定義成枚舉或常量。
【規則3-6】不同類型的操作符混合使用時,使用括號給出優先級。
【規則3-7】不允許使用復雜的操作符組合等。
【規則3-8】循環、判斷語句的程序塊部分用花括號括起來, 即使只有一條語句。(return;待議)
【規則3-9】在switch語句中總是要有default字句,建議使用斷言。
【規則3-10】每個類和方法完成單一的功能,不設計多用途面面俱到的類或方法。
【規則3-11】嚴禁使用未經初始化的變量,變量通常使用構造方法來初始。
d)代碼縮進
【規則4-1】碰到大括號要換行。
【規則4-2】不允許使用Java中的括號換行規范。
e)大小寫
【規則5-1】不要創建名稱相同,但大小寫區別的任何元素。
【規則5-2】應當大寫僅有兩個字符的縮寫。(如果只有兩個字符,則都大寫)
【規則5-3】不要把易混淆的數字和字符放在一起。
【規則5-4】使用英文命名標識符。
f)重名規范
【規則6-1】不允許變量名、類名、屬性名、 方法名等與系統標識符重名。(系統標識符見附表)
g)SQL編碼規范
【規則7-1】SQL語句全部大寫。(本人的習慣是小寫,為了性能,最好是大寫,我自己也得把習慣改改咯,哈哈哈)
【規則7-2】對較為復雜的SQL語句加上注釋,說明其功能。
【規則7-3】連接符OR、IN、AND、以及=、<=、>=等前后加空格。
【規則7-4】使用明確的列代替 SELECT *。
h)軟件架構
【規則8-1】數據庫中每一張表對應一個實體類/數據傳輸對象(DTO)。
【規則8-2】實體類名稱使用表名,也可帶有Dto后綴。
【規則8-3】三層架構應當合理使用,不應生搬硬套。
【規則8-4】三層架構元素推薦使用后綴:
數據傳輸對象 XxxxDto
DAO工廠 XxxDAOFactory
DAO接口 IXxxxDAO
服務接口 IxxxxService
DAO的數據庫實現 XxxxDAOOracle/XxxxDAOInfomix
業務邏輯 XxxxManager
i)系統
【規則9-1】在我國內不建議隨便使用設計模式等代碼模式,因為並不流行。
【規則9-2】系統輸入、資源操作(如內存分配、文件及目錄操作)、網絡操作(如通信、調用等)、任務間的操作(如通信、調用等)時必須進行錯誤、超時、或則異常處理。
【規則9-3】模塊的編寫應有完善的測試方面的考慮。
