本文轉自http://blog.csdn.net/usernamegaorn/archive/2007/10/20/1834275.aspx
基本命名規範
註記:
Pascal 大小寫形式:所有單詞第一個字母大寫,其他字母小寫。
Camel 大小寫形式:除了第一個單詞,所有單詞第一個字母大寫,其他字母小寫。
對於在頁面中的類,類名使用Pascal大小寫形式,當然,這個類名通常情況下與前台頁面的檔案名稱是一致的,比如,對於一個頁面HelloWorld.aspx,其類名會如下定義:
public class HelloWorld : Page
{
…
}
對於類庫中的類,則應按照約定加一定的首碼,通常是小寫字母c,比如一個通用類可以如下定義:
public class cHelloWorld
{
…
}
自然的,相應檔案名稱也是遵循此定義格式,在本例中,為cHelloWorld.cs
類中的方法都使用Pascal大小寫形式
public class HelloWorld
{
void SayHello ( string userName )
{
…
}
}
變數和方法中的參數使用Camel 大小寫形式
public class HelloWorld
{
int totalCount = 0;
void SayHello ( string userName )
{
string fullMessage = "Hello " + userName;
…
}
}
常量的定義
常量名通常全部採用單詞的大寫,單詞之間以底線“ _ ”隔開。
private const bool WEB_DEFAULT_DATA_LINK = true;
類的對象執行個體的命名
可以採用取類的首字母小寫方法,比如:
DataSet ds = new DataSet();
cHelloWorld hw = new cHelloWorld();
頁面控制項的命名
頁面控制項命名時,最好按照類型加首碼,其命名方式類似Camel 大小寫形式,比如:txtUserName,btnSumbit,lblErrorInfo。
不要使用匈牙利方法來命名變數
以前,多數程式員喜歡把資料類型作為變數名的首碼而m_作為成員變數的首碼。
例如:
string m_sName;
int iAge;
然而,這種方式在.NET編碼規範中是不推薦的。所有變數都用Camel 大小寫形式,而不是用資料類型和m_來作首碼。
別使用單個字母的變數象i,n,x 等。使用 index,temp等。當然,用於迴圈迭代的變數例外,如for迴圈中的i。
盡量不要使用底線
C#中的底線會帶來不好的代碼閱讀體驗,所以應當限制底線的使用。唯一採用底線的規則是常量名的定義。
比如如下代碼:
private string ExitDoor()
{
cControl_Exit.Door();
....
}
其中的cControl_Exit.Door,一眼之下難以區分類還是方法,習慣於vb編程的人很容易將cControl看成對象,將Exit.Door看成方法。
不要使用關鍵字或疑似關鍵字作為變數名
比如class,void,key之類的單詞,盡量不要單獨用作變數名,但可以與其它單片語合作為變數名。
類、方法和變數的命名不要過長,限制在三到四個單詞以內。另外,要用有意義的,描述性的詞語來命名變數。別用縮寫。用name,address,salary等代替nam,addr,sal。
介面的命名
和類命名規範相同,唯一區別是 介面在名字前加上“ I ”首碼
例:
interface IDBCommand;
interface IButton;
代碼格式規範
避免使用大檔案。
如果一個檔案裡的代碼超過300~400行,必須考慮將代碼分開到不同類中。
避免寫太長的方法。一個典型的方法代碼在1~25行之間。如果一個方法的代碼超過25行,應該考慮將其分解為不同的方法。
使用Tab縮排使代碼產生層次,不允許使用空格縮排。
當前一個值得關注的趨勢,就是通過限制Tab定位字元縮排的層數,控制碼嵌套的深度。
代碼中操作符兩端要留出空格
要這樣:for ( int i = 0; i < 10; i++ ){}
不要這樣:for (int i=0;i<10;i++){}
代碼注釋
好的代碼要做到易讀(見名知意),就可以盡量少的使用注釋,對於必要的注釋,要遵循以下格式:
注釋文字要和“ // ”空一個格。
要這樣:// 注釋內容
不要這樣://注釋內容
模組或類檔案的注釋,採用如下格式:
/// <summary>
/// Module ID:<模組編號,可以引用系統設計中的模組編號>
/// Module Name:<模組名稱>
/// Depiction:<對此類的描述,可以引用系統設計中的描述>
/// Author:<作者>
/// Create Date:<模組建立日期,格式:YYYY-MM-DD>
/// </summary>
方法的注釋加到方法定義的前面,採用如下格式:
/// <summary>
/// depiction:<對該方法的說明>
/// </summary>
/// <param name="<參數名稱>"><參數說明></param>
/// <returns>
/// <對方法傳回值的說明,該說明必須明確說明返回的值代表什麼含義>
/// </returns>
/// Writer:<作者中文名>
/// Create Date:<方法建立日期,格式:YYYY-MM-DD>
當然,以上各項並不是必需的,通常情況下唯寫<對該方法的說明>就可以了,也可以不寫。
方法名需能看出它作什麼。別使用會引起誤解的名字。如果名字一目瞭然,就無需用文檔來解釋方法的功能了。
一個方法只完成一個任務。不要把多個工作群組合到一個方法中,即使那些任務非常小。
別在程式中使用固定數值,用常量代替。
別用字串常數,用資源檔。
不要在方法間共用成員變數,如果在幾個方法間共用一個成員變數,那就很難知道是哪個方法在什麼時候修改了它的值。
必要時使用enum,別用數字或字串來指示離散值。
要這樣:
enum MailType
{
Html,
PlainText,
Attachment
}
void SendMail (string message,MailType mailType)
{
switch ( mailType )
{
case MailType.Html:
// Do something
break;
。。。
}
}
不要這樣:
void SendMail (string message, string mailType)
{
switch ( mailType )
{
case "Html":
// Do something
break;
。。。
}
}
別把成員變數聲明為 public或 protected。
都聲明為private 而使用 public/protected 的Properties,例如:
class cExample
{
private string priOwner;
public string Owner
{
get{return this.priOwner;}
}
}
使用#region來分組相關的方法和屬性定義,並且方法中,可以使用空行來分組邏輯上相關的程式碼。
項目開發規範
不允許隨意定義全域變數。如果確實需要定義全域變數,應寫入開發文檔並告知其他人員。
對於定義的公用類和公用方法,請及時寫入開發文檔,以備其他人查閱;如果需要修改公用類或公用方法,請與原作者協商,並將修改記錄寫入開發文檔。
調用統一的資料庫存取方法,保證程式良好的可遷移性。
對於可以複用的類、方法、頁面、樣式表以及JavaScript指令碼,應盡量複用,以減少代碼量。
=========================
本規範是一些通用規範加上我個人的一些看法,必有不當之處,望諸位及時指出、不吝賜教為盼。本規範在項目開發過程中會逐漸完善。
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/usernamegaorn/archive/2007/10/20/1834275.aspx