備註
此內容經Pearson Education, Inc.授權從架構設計指導方針:可重複使用 .NET 程式庫的慣例、習慣用語與範式 (第2版)轉載。 該版於2008年出版,該書自那以後已於 第三版全面修訂。 此頁面的某些資訊可能已過期。
後續的命名指導方針會套用至一般類型命名。
✔️ 使用 PascalCasing 來命名類別和結構時,應使用名詞或名詞片語。
這會區分類型名稱與使用動詞片語命名的方法。
✔️ DO 應以形容詞片語或偶爾使用名詞或名詞片語為介面命名。
名詞和名詞片語應該很少使用,而且可能表示類型應該是抽象類,而不是介面。
❌ DO NOT 為類別名稱指定前置詞 (例如 “C” )。
✔️ 請考慮以基類的名稱結束衍生類別的名稱。
這是非常可讀的,並清楚地解釋關聯性。 在程式代碼中,有一些範例是: ArgumentOutOfRangeException
,這是一種 Exception
, 和 SerializableAttribute
,這是一種 Attribute
。 不過,在適用本指導方針時,請務必使用合理的判斷:例如,類別 Button
是一種 Control
事件,雖然 Control
未出現在其名稱中。
✔️ DO 以字母 I 作為介面型別名稱的前綴,以表示是介面類型。
例如, IComponent
(描述性名詞)、 ICustomAttributeProvider
(名詞詞組)和 IPersistable
(形容詞)是適當的介面名稱。 如同其他類型名稱,請避免縮寫。
✔️ 當您定義類別-介面組合時,若類別是介面的標準實作,請務必確定名稱的不同僅在於介面名稱上加上 「I」 前置詞。
泛型型別參數的名稱
泛型已新增至 .NET Framework 2.0。 此功能引進了稱為 類型參數的新標識符類型。
✔️ DO 會使用描述性名稱命名泛型型別參數,除非單一字母名稱完全可以解釋,而且描述性名稱不會增加值。
✔️ 請考慮使用 T
作為具有單一字母類型參數之類型的類型參數名稱。
public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }
✔️ 使用 \T
作為描述性類型參數名稱的前綴。
public interface ISessionChannel<TSession> where TSession : ISession {
TSession Session { get; }
}
✔️ 考慮在參數命名中指出類型參數的限制。
例如,一個限制為 ISession
的參數可能會被命名為 TSession
。
常見類型名稱
✔️ 當命名衍生自 或實作特定 .NET Framework 類型時,請遵循下表中所述的指導方針。
基底類型 | 衍生/實作類型準則 |
---|---|
System.Attribute |
✔️ DO 將後綴 「Attribute」 新增至自訂屬性類別的名稱。 |
System.Delegate |
✔️ 請將後綴「EventHandler」添加到在事件中使用的委派名稱。 ✔️ DO 將後綴「Callback」新增至非用作事件處理程式的委派名稱。 ❌ 請勿將後綴 「Delegate」 新增至委派。 |
System.EventArgs |
✔️ DO 新增後綴 「EventArgs」。 |
System.Enum |
❌ 請勿從這個類別繼承;請改用語言支援的關鍵字;例如,在 C# 中,使用 enum 關鍵字。❌ 請勿新增後綴 「Enum」 或 「Flag」。 |
System.Exception |
✔️ DO 新增後綴 「例外狀況」。 |
IDictionary IDictionary<TKey,TValue> |
✔️ DO 新增後綴 「Dictionary」。請注意, IDictionary 這是特定的集合類型,但此指導方針的優先順序高於後續較一般的集合指導方針。 |
IEnumerable ICollection IList IEnumerable<T> ICollection<T> IList<T> |
✔️ 加上後綴「Collection」。 |
System.IO.Stream |
✔️ DO 新增後綴 「Stream」。。 |
CodeAccessPermission IPermission |
✔️ DO 新增後綴 「Permission」。。 |
命名列舉
列舉型別的名稱(也稱為列舉)一般應遵循標準型別命名規則(PascalCasing 等)。 此外,還有其他準則特別適用於列舉型別。
✔️ 請對列舉使用單一類型名稱,除非其值是位元欄位。
✔️ 請針對具有位欄位字組做為值的列舉使用複數類型名稱,也稱為旗標列舉。
❌ 請勿在列舉類型名稱中使用 「Enum」 後綴。
❌ 請勿在列舉類型名稱中使用 Flag 或 Flags 後綴。
❌ 請勿在列舉值名稱上使用前置詞(例如 ADO 列舉的 "ad"、RTF 列舉的 "rtf" 等)。
© 2005年、2009年Microsoft公司部分。 保留所有權利。
經 Pearson Education, Inc. 許可重新刊登自 Krzysztof Cwalina 和 Brad Abrams 所著的 架構設計指導方針: 可重複使用的 .NET 程式庫慣例、慣用語和模式,第 2 版,2008 年 10 月 22 日由 Addison-Wesley Professional 發行,作為 Microsoft Windows 開發系列的一部分。