C# Coding Standard
來源:互聯網
上載者:User
standard 在以前版本的Visual Studio中,微軟曾建議使用匈牙利命名法來寫代碼.在最近發布的.NET和它的程式設計語言中,微軟更換了他的這一法則.
1. 對格式與方法名稱使用PASCAL風格[1]
public class SomeClass
{
public SomeMethod(){}
}
2. 對局部變數和方法參數使用Camel風格[2]
int number;
void MyMethod(int someNumber)
{}
3. 使用I作為介面首碼
interface IMyInterface
{..}
4. 使用m_作為私人成員變數首碼
public class SomeClass
{
private int m_Number;
}
5. 使用Attribute作為自訂屬性類的尾碼
6. 使用Exception作為自訂異常處理類的尾碼
7. 使用動詞形式命名方法名,如ShowDialog()
8. 帶有傳回值的方法應該有一個方法來描述傳回值,如GetObjectStatus()
9. 使用易描述的變數名稱
l 避免使用單一字元描述變數名稱,如i或t.應使用index或temp替代
l 對共有以及受保護的成員避免使用匈牙利命名法則[3]
l 絕不使用縮寫字元,如使用num代替number
10. 總是使用C#預定義格式,而不使用在System空間內的別名
object NOT 0bject
string NOT String
int NOT Int32
11. 一般的,對于格式使用大寫字母,當處理.NET格式Type時使用Type尾碼
//Correct:
public class LinkedList<K, T>
{..}
//Avoid:
public class LinkedList<KeyType,DataType>
{..}
12. 使用易理解的命名空間[4]名稱,如產品或公司名稱
13. 避免使用命名空間的完整限定名稱,應使用using聲明替代
14. 避免using聲明放置在命名空間內部
15. 將所有的架構命名空間分組,將使用者或第三方命名空間放置在其下
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using MyCompany;
using MyControls;
16. 使用委託引用[5]代替顯式的委託執行個體
delegate void SomeDelegate();
public void SomeMethod()
{..}
SomeDelegate someDelegate=SomeMethod;
17. 保持嚴格的縮排
l 對縮排使用3個空格位
l 絕不使用TAB或者不標準的縮排,如1,2或4個空格位
18. 將注釋縮拍在與代碼縮排同等級的位置上
19. 所有的注釋應該通過拼字檢查.拼錯的注釋將預示冗餘的開發
20. 所有的成員變數應該在開始就被聲明,並使用單獨一行將屬性與方法地區分開
public class MyClass
{
int m_Number;
string m_Name;
public void SomeMethodl()
{}
public void SomeMethod2()
{}
}
21. 在離第一次使用變數儘可能近的地方聲明該局部變數
22. 檔案名稱應反映出其包含的類
23. 當使用partial類[6]並將其分配給每個檔案一部分時,對每個檔案命名使用尾碼P並附帶一個額外的數字
//In MyClassP1.cs
public partial class MyClass
{..}
// In MyClassP2.cs
public partial class MyClass
{..}
24. 將反括弧({)放置與新的一行
25. 對於匿名方法參照有規律的代碼規劃,其縮排應與匿名委託聲明對齊
delegate void SomeDelegate (string someString);
//Correct:
public void InvokeMethod()
{
SomeDelegate someDelegate=delegate (string name)
{
MessageBox.Show(name);
};
someDelegate ("Juval");
}
//Avoid
public void InvokeMethod()
{
SomeDelegate someDelegate=delegate (string name)
{MessageBox.Show(name);};
someDelegate(”Juval");
}
26. 對於匿名預設參數的方法,應該使用空括弧表示.
delegate void SomeDelegate();
//Correct
SomeDelegate someDelegate1=delegate()
{
MessageBox.Show("Hello");
};
//Avoid
SomeDelegate someDelegate1=delegate
{
MessageBox.Show("Hello");
};
由於本人E文有限,所以翻譯註釋不當之處,請指明。
[1] 特指使用Pascal的命名規範命名類型和方法的名字
[2] 特指使用camel命名規範命名局部變數和方法的參數
[3] 匈牙利命名法則:變數名=變數類型+變數的英文意思(或縮寫)
[4] namespace用於聲明一個範圍.此命名空間範圍允許您組織代碼並為您提供了建立全域唯一類型的方法.
[5] delegate聲明定義一種參考型別,該類型可用於將方法用特定的簽名封裝.委託執行個體封裝靜態方法或執行個體方法. 委託大致類似於C++中的函數指標;但是,委託是型別安全和可靠的
[6] partial簡單來說即是使用不完整的類定義並且將部分分配到每個檔案中