型はメンバーによって作られる。メンバーとは、コンストラクター、ファイナライザー、プロパティ、フィールド、メソッド、およびイベントのことだ。
このうちコンストラクタ―とファイナライザーの名前は型名から一意に決まる。このセクションでは、残りのメンバーの名前付けのガイドラインを説明する。
✓ プロパティの名前は名詞にしよう。
✓ プロパティ名には PascalCase を使おう。
✖ 次の例のように「Getー」メソッドの名前に一致するプロパティ名を使用してはならない。
public string TextWriter { get {...} set {...} }
public string GetTextWriter(int value) { ... }
通常このようなケースは、プロパティをメソッドに変更するべき状況であることを示している。
✓ コレクションのプロパティの名前には、コレクション内の項目の複数形の語句を使おう。
項目の単数形の語句に 「ーList」 または
「-Collection」 などの接尾辞を付ける名前を使用してはならない。
✓ ブール型のプロパティの名前は肯定的なフレーズにする。CantSeek の代わりに CanSeek
としよう。
そうすることが適切である場合、ブール型のプロパティに接頭辞「Isー」、「Canー」、「Hasー」を付けても良い。
✓ プロパティの型と同じ名前を付けることを検討してみよう。
たとえば、次の例のプロパティは Color という名前の列挙型で Control の Color の取得および設定をおこなう。
このような場合、Colorというプロパティ名は適切だ。
public enum Color {...}
public class Control
{
public Color Color { get {...} set {...} }
}
フィールドの名前付けのマイクロソフト公式ガイドラインは、public または protected の静的フィールドに適用される。
public または protected のインスタンスフィールドは使用を禁止されている。
internal または private のインスタンスフィールドには、マイクロソフト公式ガイドラインは対応していない。
✓ フィールドは「プロパティバッキングストア」と「依存関係プロパティ」のみに使用を制限しよう。
また、この目的でフィールドを使用する場合、private
の静的・インスタンスフィールドにしよう。
✓ プロパティバッキングストアとして使用するフィールドの名前はプロパティ名に接尾語「_(アンダースコア)」を追加する。
✓ 依存関係プロパティとして使用するフィールドの名前はプロパティ名に接尾語「ーProperty」を追加する。
✓ メソッドは型のアクションを意味するので、メソッドの名前は動詞にしよう。
✓ メソッド名には PascalCase を使おう。
public class String
{
public int CompareTo(...);
public string[] Split(...);
public string Trim();
}
イベントは、常に何らかのアクションを参照している。そのアクションには、①現在進行形で発生している最中のものと、②現在完了形で既に終了したものがある。
そのためメソッドと同様にイベントの名前は動詞にして、英語の時制表現を利用して①②のいずれなのかを明確にしよう。
✓イベントの名前は動詞にしよう。
たとえば、Clicked、Painting、DroppedDown、という具合にしよう。
✓ 現在進行形と現在完了形でイベントが参照するアクションの時制を明確にしよう。
たとえば、ウィンドウが閉じられる前に発生するイベントは、Closing とする。ウィンドウが閉じられた後に発生するイベントは、Closed とする。
✖ 上記の目的のために「Before」または「After」といった接頭辞または接尾辞を使うのはやめよう。
✓ デリゲートをイベントの型として使う場合、次の例で示すように接尾辞「ーEventHandler」をイベントハンドラの名前に追加しよう。
public delegate void ClickedEventHandler(object sender, ClickedEventArgs e);
✓イベントハンドラの2つのパラメータは、sender と
e という名前にしよう。
sender パラメータは、イベントを発生させたオブジェクトを表現する。sender パラメーターの型は、具体的な型が決まっていても object
とする。
✓イベント引数のクラス名には接尾辞「ーEventArgs」を追加しよう。