1. 目的
爲了保證企業編寫出的程序都符合相同的規範,保證一致性、統一性而建立的程序編碼規範。
2. 範圍
適用於企業所有基於.NET平臺的軟件開發工作。
3. 規範內容
3.1. 代碼格式
u 所有的縮進爲4個空格,使用VS.NET的默認設置。
u 在代碼中垂直對齊左括號和右括號。
if(x==0)
{
Response.Write("用戶編號必須輸入!");
}
不允許以下情況:
if(x==0) {
Response.Write("用戶編號必須輸入!");
}
或者:
if(x==0){ Response.Write("用戶編號必須輸入!");}
u 爲了防止在閱讀代碼時不得不滾動源代碼編輯器,每行代碼或註釋在1024*800的顯示頻率下不得超過一顯示屏
u 當一行被分爲幾行時,通過將串聯運算符放在每一行的末尾而不是開頭,清楚地表示沒有後面的行是不完整的。
u 每一行上放置的語句避免超過一條。
u 在大多數運算符之前和之後使用空格,這樣做時不會改變代碼的意圖卻可以使代碼容易閱讀。
例:
int j = i + k;
而不應寫爲
int j=i+k;
u 將大的複雜代碼節分爲較小的、易於理解的模塊。
u 編寫 SQL 語句時,對於關鍵字使用全部大寫,對於數據庫元素(如表、列和視圖)使用大小寫混合。
u 將每個主要的 SQL 子句放在不同的行上,這樣更容易閱讀和編輯語句,例如: SELECT FirstName, LastName
FROM Customers
WHERE State = 'WA'
3.2. 註釋(Comment)規範
註釋規範包括:模塊(類)註釋規範、類的屬性、方法註釋規範、代碼間註釋
3.2.1. 模塊(類)註釋規範
模塊開始必須以以下形式書寫模塊註釋:
///<summary>
///模塊編號:<模塊編號,可以引用系統設計中的模塊編號>
///作用:<對此類的描述,可以引用系統設計中的描述>
///作者:作者中文名
///編寫日期:<模塊創建日期,格式:YYYY-MM-DD>
///</summary>
如果模塊有修改,則每次修改必須添加以下注釋:
///<summary>
///Log編號:<Log編號,從1開始一次增加>
///修改描述:<對此修改的描述>
///作者:修改者中文名
///修改日期:<模塊修改日期,格式:YYYY-MM-DD>
///</summary>
3.2.2. 類屬性註釋規範
在類的屬性必須以以下格式編寫屬性註釋:
/// <summary>
///屬性說明
/// </summary>
3.2.3. 方法註釋規範
在類的方法聲明前必須以以下格式編寫註釋
/// <summary>
/// 說明:<對該方法的說明>
/// </summary>
/// <param name="<參數名稱>"><參數說明></param>
/// <returns>
///<對方法返回值的說明,該說明必須明確說明返回的值代表什麼含義>
/// </returns>
3.2.4. 代碼間註釋規範
代碼間註釋分爲單行註釋和多行註釋:
單行註釋:
//<單行註釋>
多行註釋:
/*多行註釋1
多行註釋2
多行註釋3*/
代碼中遇到語句塊時必須添加註釋(if,for,foreach,……),添加的註釋必須能夠說明此語句塊的作用和實現手段(所用算法等等)。
3.3. 變量(Variable)命名規範
3.3.1. 程序文件(*.cs)中的變量命名規則
程序中變量名稱 = 變量的前綴 +代表變量含意的英文單詞或單詞縮寫。
1. 類模塊級的變量請用“m_”作前綴
public class hello
{
private string m_Name;
private DateTime m_Date;
}
2. 類的屬性所對應的變量,採用屬性名前加“m_”前綴的形式
public class hello
{
private string m_Name;
public string Name
{
get
{
return m_Name;
}
}
}
3. 過程級的變量不使用前綴
public class hello
{
void say()
{
string SayWord;
}
}
4. 過程的參數使用“p_”作爲參數
public class hello
{
void say(string p_SayWord)
{
}
}
補充說明:
針對異常捕獲過程中的Exception變量命名,在沒有衝突的情況下,統一命名爲e;
如果有衝突的情況下,可以重複e,比如:ee。
Try
{
//your code
try
{
//code
}
catch(Exception ee)
{
//your code
}
}
catch(Exception e)
{
//your code
}
補充:如果捕獲異常不需要作任何處理,則不需要定義Exception實例
例:
try
{
//your code
}
catch( Exception )
{
}
5. 鑑於大多數名稱都是通過連接若干單詞構造的,請使用大小寫混合的格式以簡化它們的閱讀。每個單詞的第一個字母都是大寫.
6. 即使對於可能僅出現在幾個代碼行中的生存期很短的變量,仍然使用有意義的名稱。僅對於短循環索引使用單字母變量名,如 i
或 j
。
7. 在變量名中使用互補對,如 min/max、begin/end 和 open/close。
8. 不要使用原義數字或原義字符串,如 For i = 1 To 7
。而是使用命名常數,如 For i = 1 To NUM_DAYS_IN_WEEK
以便於維護和理解。
3.3.2. 控件命名規則
控件命名=Web控件縮寫前綴 + “_” +變量名
控件 |
縮寫 |
Label |
lbl |
TextBox |
txt |
CheckBox |
chk |
Button |
cmd |
ListBox |
lst |
DropDownList |
drp |
等等 |
|
3.4. 常量命名規範
常量名也應當有一定的意義,格式爲 NOUN 或 NOUN_VERB。常量名均爲大寫,字之間用下劃線分隔。
例:
private const bool WEB_ENABLEPAGECACHE_DEFAULT = true;
private const int WEB_PAGECACHEEXPIRESINSECONDS_DEFAULT = 3600;
private const bool WEB_ENABLESSL_DEFAULT = false;
注:
變量名和常量名最多可以包含 255 個字符,但是,超過 25 到 30 個字符的名稱比較笨拙。此外,要想取一個有實際意義的名稱,清楚地表達變量或常量的用途,25 或 30 個字符應當足夠了。
3.5. 類(Class)命名規範
1. 名字應該能夠標識事物的特性。
2. 名字儘量不使用縮寫,除非它是衆所周知的。
3. 名字可以有兩個或三個單詞組成,但通常不應多於三個。
4. 在名字中,所有單詞第一個字母大寫。
例如 IsSuperUser,包含ID的,ID全部大寫,如CustomerID。
5. 使用名詞或名詞短語命名類。
6. 少用縮寫。
7. 不要使用下劃線字符 (_)。
例:
3.6. 接口(Interface)命名規範
和類命名規範相同,唯一區別是 接口在名字前加上“I”前綴
例:
interface IDBCommand;
interface IButton;
3.7. 方法(Method)命名規範
和類命名規範相同。
3.8. 命名空間(NameSpace)命名規範
和類命名規範相同。