­

推薦:C#命名規範12條

  • 2021 年 5 月 28 日
  • 筆記

編碼規範對於程序員而言尤為重要,有以下幾個原因:

1.一個項目的生命周期中,80%的花費在於維護;

2.幾乎沒有任何一個項目,在其整個生命周期中,均由最初的開發人員來維護;

3.命名規範可以改善項目的可讀性,可以讓程序員儘快而徹底地理解新的代碼;

4.如果你將源碼作為產品發佈,就需要確任它是否被很好的打包並且清晰無誤,比如你已構建的其它任何產 品。 為了執行規範,每個軟件開發人員必須一致遵守編碼規範。

常見的命名規則我們都知道:

Pascal 規則:
每個單詞開頭的字母大寫(如 TestCounter).

Camel 規則:
除了第一個單詞外的其他單詞的開頭字母大寫. 如. testCounter.

Upper 規則:
僅用於一兩個字符長的常量的縮寫命名,超過三個字符長度應該應用Pascal規則

例如:

public class Math
{
public const PI = ...
public const E = ...
public const FeigenBaumNumber = ...
}

針對C#開發者,整理了15條命名規範!

1.類命名規則

  • 類名應該為名詞及名詞短語,儘可能使用完整的詞.

  • 使用Pascal規則

  • 不要使用類前綴 – 不要使用下劃線字符 (_)。

  • 有時候需要提供以字母 I 開始的類名稱,雖然該類不是接口。只要 I 是作為類名稱組成部分的整個單詞的第一個字母,這便是適當的。例如,類名稱 IdentityStore 就是適當的。

  • 在適當的地方,使用複合單詞命名派生的類。派生類名稱的第二個部分應當是基類的名稱。例如,ApplicationException 對於從名為 Exception 的類派生的類是適當的名稱,原因是 ApplicationException 是一種 Exception。請在應用該規則時進行合理的判斷。例如,Button 對於從 Control 派生的類是適當的名稱。儘管按鈕是一種控件,但是將 Control 作為類名稱的一部分將使名稱不必要地加長。

2.接口命名規則

  • 接口名稱應該為名詞及名詞短語或者描述其行為的形容詞,儘可能使用完整的詞. (Example IComponent or IEnumberable)

  • 使用Pascal規則

  • 使用字符I為前綴,並緊跟一個大寫字母(即接口名的第一個字母大寫)

複製代碼代碼如下:

interface ICompare
{
int Compare();
}

3.枚舉命名規則

  • 對於 Enum 類型和值名稱使用 Pascal 大小寫。
  • 少用縮寫。
  • 不要在 Enum 類型名稱上使用 Enum 後綴。
  • 對大多數 Enum 類型使用單數名稱,但是對作為位域的 Enum 類型使用複數名稱。
  • 總是將 FlagsAttribute 添加到位域 Enum 類型。

4.變量命名

  • 在簡單的循環語句中計數器變量使用 i, j, k, l, m, n
  • 使用 Camel 命名規則

5. 方法命名

  • 使用Pascal規則

  • 對方法名採用一致的動詞/賓語或賓語/動詞順序。例如,將動詞置於前面時,所使用的名稱諸如 InsertWidget 和 InsertSprocket;將賓語置於前面時,所使用的名稱諸如 WidgetInsert 和 SprocketInsert。

  • 推薦名稱應該為動詞或動詞短語.例如Save,SaveCustomer,而不要使用CustomerSave

  • 不要在方法中重複類的名稱。例如,如果某個類已命名為 Book,則不要將某個方法稱為 Book.CloseBook,而可以將方法命名為 Book.Close。

6.屬性命名

  • 名稱應該為名詞及名詞短語

  • 使用Pascal規則

  • 對於bool型屬性或者變量使用Is(is)作為前綴,不要使用Flag後綴,例如應該使用IsDeleted,而不要使用DeleteFlag

7.集合命名

  • 名稱應該為名詞及名詞短語

  • 使用Pascal規則

  • 名稱後面追加「Collection」

8. 事件命名

  • event handlers命名使用 EventHandler 後綴.

  • 兩個參數分別使用 sender 及 e

  • 使用Pascal規則

  • 事件參數使用EventArgs 後綴

  • 事件命名使用語法時態反映其激發的狀態,例如 Changed,Changing.

  • 考慮使用動詞命名. 變量命名

  • 在簡單的循環語句中計數器變量使用 i, j, k, l, m, n

  • 使用 Camel 命名規則

9.自定義的屬性以Attribute結尾

代碼如下:

public class AuthorAttribute : Attribute
{
}

10.自定義的異常以Exception結尾

複製代碼代碼如下:

public class AppException : Exception
{
}

11. 在類的頂部聲明所有的成員變量,靜態變量聲明在最前面

// Correct
public class Account
{
    public static string BankName;
    public static decimal Reserves;
    
    public string Number {get; set;}
    public DateTime DateOpened {get; set;}
    public DateTime DateClosed {get; set;}
    public decimal Balance {get; set;}
    
    // Constructor
    public Account()
    {
        // ...
    }
}

12.不推薦使用匈牙利命名法

不要給成員變量加任何前綴(如、m、s_等等)。如果想要區分局部變量和成員變量,可以使用this關鍵字。

命名規範的總結用表格表示如下:

與類相關:

與變量命名相關:


與ADO.NET有關:


與頁面控件有關: