C#通用編碼規範

來源:互聯網
上載者:User

本文轉自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

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.