類型成員名稱

注意

此內容是由 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 {...} }
}

事件的名稱

事件一律會參考某些動作,不論該動作正在發生或已發生。 因此,如同方法一般,事件應以動詞為名,且應使用動詞時態來指出事件發生的時間。

✔️ 請務必以動詞或動詞片語命名事件。

範例包括 ClickedPaintingDroppedDown 等等。

✔️ 請務必使用現在和過去式,來為事件賦予具有現在和之後概念的名稱。

例如,在視窗關閉前發生的關閉事件會稱作 Closing,而在視窗關閉後發生的事件則稱作 Closed

❌ 請勿使用 "Before" 或 "After" 首碼與尾碼來表示之前和之後的事件。 使用如同敘述的現在與過去時態。

✔️ 請務必以 "EventHandler" 尾碼來命名事件處理常式 (用作事件類型的委派),如下列範例中所示:

public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);

✔️ 請務必在事件處理常式中使用名為 sendere 的兩個參數。

傳送者參數代表引發事件的物件。 傳送者參數的類型通常為 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 節錄。

另請參閱