ASP.NET(C#) 編碼規範[整理讨论]
ASP.NET(C#) 編碼規範
[WebFlow Team]
Ver1.0
Author:Scott.Fang
1. 目的
為了統一公司軟體發展的設計過程中關於代碼編寫時的編寫規範和具體開發工作時的編程規範,保證代碼的一致性,便於交流和維護,特制定此規範。
2. 範圍
本規範適用於開發組全體人員,作用於軟體專案開發的代碼編寫階段和後期維護階段。
3. 代碼格式
在編寫代碼過程中,建議遵守以下規則。
1). 縮進規則:使用四個空格作爲每層次代碼縮進。
2). 在括弧對對齊的位置垂直對齊左括弧和右括弧,如:
for (i = 0; i < 100; i++)
{
...
}
3). 沿邏輯結構行縮進代碼,如:
If ... Then
If ... Then
...
Else
...
End If
Else
...
End If
4). 爲了防止在閲讀代碼時左右滾動代碼編輯器,每行代碼或註釋不得超過一個顯示屏。
5). 只要合適,每一行放置的語句避免超過一條。例外:循環。
6). 當一行被分為幾行時,通過將串聯運算符放在每一行的末尾而不是開頭,清楚地表示沒有後面的行是不完整的。
7). 在大多數運算符之前和之後使用空格,這樣做時不會改變代碼的意圖,卻可以使代碼更加容易閲讀。
8). Case規則: default case總應該存在,如果不允許到達,則應該保證:若到達了就會觸發一個錯誤。Case的選擇條件最好使用int或string類型。
9). 對齊規則: 變數的申明和初始化都應對齊。例如:
int m_iCount;
float m_fIncome,m_fPay;
m_iCount = 0;
m_fIncome = 0.3;
4. 注釋規範
4.1. 注釋規範
4.2. 原始檔案頭註釋
建議的原始檔案的註釋示例如下:
//--------------------------------------------------------------------------------------
// Copyright (C) 2005-2006 Inventec Appliances Corporation IS&T/ISD
// All rights reserved.
// FileName: Search.aspx.cs <檔案名稱(包括檔擴展名)>
// Author: 姓名(Scott) <創建者(中文名必須,英文名可寫可不寫)>
// CDT: 2006-06-10 <創建日期(格式:YYYY-MM-DD)>
// Version: 1.0.0.0 <創建版本號(第一次為1.0.0.0)>
// Rewriter: 姓名(Vincent) <修改者(中文名必須,英文名可寫可不寫)>
// UDT: 2006-06-11 <修改日期(格式:YYYY-MM-DD)>
// Version: 1.0.0.1 <修改後版本號(具體參考版本號定義規則)>
// Depiction: 加班單查詢功能 <簡單描述功能>
//--------------------------------------------------------------------------------------
4.3. 類註釋
使用基於XML的///註釋,編譯環境會自動帶出,也方面導出幫助文檔。
///<summary>
/// ClassID: 100 <類編號,可以引用系統設計中的類編號>
/// Depiction: 加班查詢 <對此類的描述,可以引用系統設計中的描述>
/// Author: 姓名(Scott) <創建者(中文名必須,英文名可寫可不寫)>
/// CDT: 2006-06-11 <創建日期(格式:YYYY-MM-DD)>
///</summary>
如果類只進行部分少量代碼的修改時,則每次修改須添加以下注釋:
/// Rewriter: 姓名(Scott) Rewriter Date:2006-6-12 Start1:
/*原代碼內容*/
/// End1:
將原代碼內容注釋掉,然後添加新代碼使用以下注釋:
/// Added by: 姓名(Scott) Add Date: 2006-6-12 Start2:
*新代碼內容* <新代碼內容>
/// Depiction: <對此修改的描述>
/// End2:
如果模組輸入輸出參數或功能結構有較大修改,則每次修改必須添加以下注釋:
///<summary>
/// LogID: 1 <Log編號,從1開始一次增加>
/// Depiction: 加班查詢 <對此修改的描述>
/// Rewriter: 姓名(Vincent) <修改者(中文名必須,英文名可寫可不寫)>
/// UDT: 2006-06-12 <創建日期(格式:YYYY-MM-DD)>
///</summary>
4.4. 類屬性註釋
在類的屬性必須以以下格式編寫屬性注釋:
/// <summary>
/// 厰別資訊 <對此屬性的描述資訊>
/// </summary>
public string Plant
{
get
{
return this.plant;
}
set
{
this.plant = value;
}
}
4.5. 方法註釋
在類的方法聲明前必須以以下格式編寫注釋:
/// <summary>
/// depiction: 獲得加班班別 <對該方法的說明>
/// </summary>
/// <param input=" SysDate">加班日期 <參數說明></param>
/// <param output="AttendanceClass ">班別 <參數說明></param>
/// <returns>
///<對方法返回值的說明,該說明必須明確說明返回的值代表什麼含義>
/// </returns>
/// Author: 姓名(Scott) <創建者(中文名必須,英文名可寫可不寫)>
/// CDT: 2006-06-11 <創建日期(格式:YYYY-MM-DD)>
4.6. 代碼間註釋
代碼間注釋分為單行注釋和多行注釋.
單行注釋: // 單行注釋
多行注釋: /* 多行注釋1
多行注釋2
多行注釋3 */
代碼中遇到語句塊時必須添加注釋(if,for,foreach,……),添加的注釋必須能夠說明此語句塊的作用和實現手段(所用演算法等等).
5. 命名規範
5.1. 專案命名
專案名稱以Plant+SPM開頭加上英文描述
各厰通用的表單以Plant=IAC,其他以廠區簡稱(IACT,IACS,IACP,IASM)
例如: IACSPMAddWork <表示公司名称加班單專案>
IACPSPMPurchase <表示公司名称浦東厰申購單專案>
5.2. 文檔命名
第一版(默認)
FormUse.aspx(FormUse.aspx.cs) |
WebForm.asxp(WebForm.asxp.cs) |
TaskPane001.aspx(TaskPane001.aspx.cs) |
第二版:
FormUse002.aspx(FormUse002.aspx.cs) |
WebForm002.asxp(WebForm002.asxp.cs) |
TaskPane002.aspx(TaskPane002.aspx.cs) |
PS: WebForm命名為表單英文描述
例如:AddWork.aspx(AddWork.aspx.cs)<表示加班單>
Ø 頁面變流程不變: 無需變更FormUse
Ø 頁面不變流程變: 需要新增FormUse002、TaskPane002,而且需要在FormUse002.aspx中替換"TaskPane001"為"TaskPane002"
5.3. 變數命名
...
5.4. 常量命名
常量名也應當有一定的意義,格式為名詞或名詞_動詞。常量名均為大寫,字之間用下劃線分隔。
例: private const bool WEB_ENABLEPAGECACHE_DEFAULT = true;
private const int WEB_CACHEEXPIRESINSECONDS_DEFAULT = 3600;
注:
變數名和常量名最多可以包含 255 個字元,但是,超過 25 到 30 個字元的名稱比較笨拙。此外,要想取一個有實際意義的名稱,清楚地表達變數或常量的用途,25 或 30 個字元應當足夠了。
5.5. 類命名
w 名字應該能夠標識事物的特性。
w 名字儘量不使用縮寫,除非它是眾所周知的。
w 名字可以有兩個或三個單詞組成,但通常不應多於三個。
w 在名字中,所有單詞第一個字母大寫。例如:IsSuperUser,包含ID的,ID全部大寫,如:CustomerID。
w 使用名詞或名詞短語命名類。
w 少用縮寫。
w 不要使用下劃線字元 (_)。
5.6. 程序版本號
主程序的版本號=主版本號+次版本號+Bulid(Fix版本號)
w 主版本號: 表示程序的重大修改[例如,修改或新增了程序的重要功能]
w 次版本號: 表示程序的一般修改[例如,修改或新增了程序的一般功能]
w Fix版本號:表示程序Bug的修改,以修改的日期縮寫表示,如
舉例説明:程序版本號為1.2 Build(20060120)
PS:此规范大部分参照至网上查询所得资料,如果有Copy之处还请原作者见谅.