命名約定和風格 1. 使用Pascal的命名規范命名類型和方法的名字。 public class SomeClass { public SomeMethod(){} } 2. 使用camel命名規范命名局部變量和方法的參數。 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. 有返回值的方法應該有一個可以描述其返回值的名字,比如:GetObjectState()。 9. 使用有意義的變量名稱。 10. 使用C#的預定義的類型而不使用System命名空間中其別名來申明變量。 使用object 而不是 Object 使用string 而不是 String 使用 int 而不是 Int32 11. 通常情況下,類型使用大寫字母。當處理.Net的類型的時候使用Type作為其後綴。 //正確的是: public class LinkedList<K,T> {…} //避免使用: public class LinkedList<KeyType,DataType> {…} 12. 使用有意義的命名空間,比如使用公司的名稱以及產品的名稱。 13. 避免使用完全限定名。而使用using語句替換之。 14. 避免將using語句寫在命名空間的內部。 15. 將所有的框架定義的命名空間為一組,自定義的和第三方的命名空間放在另一組。 using System; using System.Collections. using System.ComponentModel; using System.Data; using MyCompany. using MyControls; 16. 使用委托的引用替換顯式的委托實例。 delegate void SomeDelegate(); public void SomeMethod() {…} SomeDelegate someDelegate = SomeMethod; 17. 保持嚴格的縮進風格。 a. 使用3個空格縮進 b. 不要使用tabs或者其他不標准的縮進,比如1、2、4個空格。 18. 在編寫注釋的時候注釋的縮進和編碼的縮進必須是相同級別的。 19. 所有的注釋都要通過拼寫檢查,錯誤的拼寫是粗糙的開發。(針對漢語則要語句通順易於理解) 20. 所有的成員變量都應該聲明在頂部,同時使用一個空行來將他們和屬性以及方法分開。 public class MyClass { int m_Number; string m_Name;
public void SomeMethod1() {} public void SomeMethod2() {} } 21. 盡可能在第一次使用局部變量的時候申明它。 22. 文件名稱應該可以反映出它所包含的類。 23. 當使用不完整的類並且將部分分配到每個文件中,用P+序數作為後綴命名文件。 // in myClassP1.cs public partial class MyClass {…} // in myClassP2.cs public partial class MyClass {…} 24. 總是將大括號放在一個新行上。 25. 匿名方法和一般(正規)的方法代碼使用相似的代碼布局 a. 規定:大括號(方法體的括號)必須使用新行 delegate void SomeDelegate(string someString); // 正確的是: public void InvokeMethod() { SomeDelegate someDelegate = delegate(string name) { MessageBox.Show(name); }; someDelegate(“Juval”); } // 避免使用: public void InvokeMethod() { SomeDelegate someDelegate = delegate(string name){ MessageBox.Show(name);}; someDelegate(“Juval”); } 26. 在匿名無參方法中要使用空的括號。 a. 如果匿名方法有可能被使用在任何委托中那麼可以省略括號。 delegate void SomeDelegate(); // 正確的方法是: SomeDelegate someDelegate1 = delegate() { MessageBox.Show(“Hello”); } // 避免使用: SomeDelegate someDelegate1 = delegate { MessageBox.Show(“Hello”); }