共用方式為


類別、結構和介面的名稱

更新:2007 年 11 月

一般來說,型別名稱應該是名詞片語,這裡的名詞是此型別所表示的實體。例如,ButtonStackFile 都各自有識別此型別表示的實體之名稱。請從開發人員的觀點選擇可識別實體的名稱;名稱應該反映使用情形。

下列方針適用於型別名稱的選取。

要透過 Pascal 命名法的大小寫慣例,使用名詞、名詞片語或偶爾的形容詞片語來命名類別、介面和實值型別。

請勿為類別名稱提供前置詞 (例如字母 C)。

應該以字母 I 開頭的介面是這項規則的例外。

請考慮以基底類別的名稱做為衍生類別名稱的結尾。

例如,繼承自 Stream 的 Framework 型別會結束於 Stream,且繼承自 Exception 的型別會結束於 Exception。

要以字母 I 當做介面名稱的前置詞,表示此型別是介面。

要確定在定義類別 / 介面組,而此類別是此介面的標準實作時,其名稱的差異只有介面名稱上的字母 I 前置詞。

例如,Framework 提供了 IAsyncResult 介面和 AsyncResult 類別。

泛型型別參數的名稱

泛型是 .NET Framework 2.0 版的主要新功能。下列方針涵蓋了為泛型型別參數選取正確的名稱。

要使用描述性名稱來命名泛型型別參數,除非單一字母的名稱便以足夠說明,而描述性名稱不會增加任何價值時。

IDictionary<TKey, TValue> 是遵守這個方針的介面之範例。

請考慮使用字母 T 做為具有單一字母型別參數的型別之型別參數名稱。

要使用字母 T 來做為描述性型別參數名稱的前置詞。

請考慮指示條件約束位於參數名稱中的型別參數上。例如,限制為 ISession 的參數可稱為 TSession。

一般型別的名稱

下列方針將提供一些命名慣例,以協助開發人員辨識某些類別的預期使用案例。當此方針參考的型別繼承自某個其他型別時,這會套用到所有的繼承者,而不只是直接繼承的型別。例如,「將尾碼 Exception 加入到繼承自 Exception 的型別」的方針,意指在繼承階層架構內具有 Exception 的任何型別應該會有以 Exception 結尾的名稱。

每一個方針也會用來保留指定的尾碼,除非您的型別符合方針所建立的準則時,便不應該使用此尾碼。例如,如果您的型別並未直接或間接繼承自 Exception,則它的名稱不能以 Exception 做結尾。

要將尾碼 Attribute 加入到自訂屬性類別中。

ObsoleteAttributeAttributeUsageAttribute 為遵守此方針的型別名稱。

要將尾碼 EventHandler 加入到用於事件的型別名稱 (例如 C# 事件的傳回型別)。

AssemblyLoadEventHandler 是遵守此方針的委派名稱。

要將尾碼 Callback 加入到不是事件處理常式的委派名稱。

請勿將尾碼 Delegate 加入到委派。

要將尾碼 EventArgs 加入到可擴充 System.EventArgs 的類別。

請不要衍生自 System.Enum 類別,要改用語言所提供的關鍵字。例如在 C# 中,請使用 enum 關鍵字。

要將尾碼 Exception 加入到繼承自 System.Exception 的型別。

要將尾碼 Dictionary 加入到實作 System.Collections.IDictionary 或 System.Collections.Generic.IDictionary<TKey, TValue> 的型別。請注意,System.Collections.IDictionary 是集合的特定型別,但是這個方針優先於底下更一般性的集合方針。

要將尾碼 Collection 加入到實作 System.Collections.IEnumerable、System.Collections.ICollection、System.Collections.IList、System.Collections.Generic.IEnumerable<T>、System.Collections.Generic.ICollection<T> 或 System.Collections.Generic.IList<T> 的型別。

要將尾碼 Stream 加入到繼承自 System.IO.Stream 的型別。

要將尾碼 Permission 加入到繼承自 System.Security.CodeAccessPermission 或 implement System.Security.IPermission 的型別。

列舉型別的名稱

請勿在列舉值名稱上使用前置詞。例如,請勿使用前置詞,例如用 ad 表示 ADO 列舉型別,或是用 rtf 表示 Rich Text 格式列舉型別等。

這也暗示,您不應該在列舉值名稱中加入列舉型別名稱。下列程式碼範例將示範列舉值的錯誤命名。

Public Enum Teams

    TeamsAlpha
    TeamsBeta
    TeamsDelta

End Enum
public  enum Teams
{
    TeamsAlpha,
    TeamsBeta,
    TeamsDelta
}

請不要在列舉型別上使用 Enum 做為尾碼。

請不要在旗標列舉型別的名稱上將旗標當做尾碼加入。

要針對列舉型別使用單數名稱,除非它的值是位元欄位。

要針對具有位元欄位值的列舉型別使用複數名稱,這也稱為旗標列舉型別。

Portions Copyright 2005 Microsoft Corporation.All rights reserved.

Portions Copyright Addison-Wesley Corporation.All rights reserved.

如需設計方針的詳細資訊,請參閱由 Krzysztof Cwalina 和 Brad Abrams 所著,並由 Addison-Wesley 於 2005 年發行的「Framework 設計方針:可重複使用之 .NET 程式庫的慣例、慣用語法和模式」一書。

請參閱

其他資源

開發類別庫的設計方針

命名方針