類型成員名稱
注意
此內容是由 Pearson Education, Inc. 授權轉載自架構設計指導方針:可重複使用 .NET 程式庫的慣例、慣用語和模式,第 2 版。 該版於 2008 年出版,該書自那以後已於第三版進行了全面修訂。 此頁面上的某些資訊可能已過期。
類型由成員組成:方法、屬性、事件、建構函式及欄位。 下列各節會描述為類型成員命名的方針。
方法的名稱
因為方法是採取動作的手段,所以設計方針會要求方法名稱為動詞或動詞片語。 遵循此方針也能用來區別方法名稱與屬性和類型名稱,後兩者為名詞或形容詞。
✔️ 請務必提供是動詞或動詞片語的方法名稱。
public class String {
public int CompareTo(...);
public string[] Split(...);
public string Trim();
}
屬性的名稱
不同於其他成員,屬性應有名詞片語或形容詞名稱。 這是因為屬性會參考資料,而屬性的名稱則會反映這點。 PascalCasing 總是會用作屬性名稱。
✔️ 請務必使用名詞、名詞片語或形容詞來命名屬性。
❌ 請勿使屬性符合 "Get" 方法的名稱,如下列範例所示:
public string TextWriter { get {...} set {...} }
public string GetTextWriter(int value) { ... }
此模式通常表示屬性應該真的是方法。
✔️ 請務必以複數片語命名集合屬性,描述集合中的項目而非使用後面接著 "List" 或 "Collection" 的單數片語。
✔️ 請務必以肯定片語 (CanSeek
而非 CantSeek
) 命名布林值屬性。 此外,您也可以使用 "Is"、"Can" 或 "Has" 作為布林值屬性的首碼,但僅限於新增值的情況。
✔️ 請考慮為屬性提供與其類型相同的名稱。
例如,下列屬性正確地取得並設定了名為 Color
的數值,所以屬性名稱即為 Color
:
public enum Color {...}
public class Control {
public Color Color { get {...} set {...} }
}
事件的名稱
事件一律會參考某些動作,不論該動作正在發生或已發生。 因此,如同方法一般,事件應以動詞為名,且應使用動詞時態來指出事件發生的時間。
✔️ 請務必以動詞或動詞片語命名事件。
範例包括 Clicked
、Painting
、DroppedDown
等等。
✔️ 請務必使用現在和過去式,來為事件賦予具有現在和之後概念的名稱。
例如,在視窗關閉前發生的關閉事件會稱作 Closing
,而在視窗關閉後發生的事件則稱作 Closed
。
❌ 請勿使用 "Before" 或 "After" 首碼與尾碼來表示之前和之後的事件。 使用如同敘述的現在與過去時態。
✔️ 請務必以 "EventHandler" 尾碼來命名事件處理常式 (用作事件類型的委派),如下列範例中所示:
public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);
✔️ 請務必在事件處理常式中使用名為 sender
和 e
的兩個參數。
傳送者參數代表引發事件的物件。 傳送者參數的類型通常為 object
,即使可採用更明確的類型時也一樣。
✔️ 請務必以 "EventArgs" 尾碼命名事件引數類別。
欄位的名稱
欄位命名方針適用於靜態公開和保護的欄位。 方針並未涵蓋內部與私人的欄位,且成員設計方針並不允許公開或保護的執行個體欄位。
✔️ 請務必在欄位名稱中使用 PascalCasing。
✔️ 請務必使用名詞、名詞片語或形容詞來命名欄位。
❌ 請勿為欄位名稱使用首碼。
例如,不要使用 "g_" 或 "s_" 來表示靜態欄位。
Portions © 2005, 2009 Microsoft Corporation. 著作權所有,並保留一切權利。
獲 Pearson Education, Inc. 的授權再版,從 Krzysztof Cwalina 和 Brad Abrams 撰寫,並在 2008 年 10 月 22 日由 Addison-Wesley Professional 出版,作為 Microsoft Windows Development Series 一部份的 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition 節錄。