次の方法で共有


クラス、構造体、およびインターフェイスの名前

このコンテンツは、 フレームワーク設計ガイドライン (再利用可能な .NET ライブラリの規則、イディオム、パターン、第 2 版) から、Pearson Education, Inc. のアクセス許可によって再印刷されます。 そのエディションは2008年に出版され、その後 、本は第3版で完全に改訂されています。 このページの情報の一部が古くなっている可能性があります。

以下の名前付けガイドラインは、一般的な型の名前付けに適用されます。

✔️ DO パスカルカシングを使用して、名詞または名詞句を持つクラスと構造体に名前を付けます。

これにより、型名と、動詞句で名前が付けられたメソッドが区別されます。

✔️ DO は、形容詞句を持つインターフェイスに名前を付けます。また、場合によっては名詞や名詞句でインターフェイスに名前を付けます。

名詞と名詞句はまれに使用する必要があり、型がインターフェイスではなく抽象クラスである必要があることを示している可能性があります。

❌ クラス名にプレフィックスを付けないでください (例: "C")。

✔️ 派生クラスの名前を基底クラスの名前で終了することを検討してください。

これは非常に読みやすく、関係を明確に説明します。 コード内のこの例には、ArgumentOutOfRangeExceptionの一種であるExceptionと、SerializableAttributeの一種であるAttributeがあります。 ただし、このガイドラインを適用する上で合理的な判断を使用することが重要です。たとえば、 Button クラスは一種の Control イベントですが、 Control はその名前には表示されません。

✔️ 型がインターフェイスであることを示すために、インターフェイス名に文字 I をプレフィックスとして付けます。

たとえば、 IComponent (説明名詞)、 ICustomAttributeProvider (名詞句)、 IPersistable (形容詞) は適切なインターフェイス名です。 他の型名と同様に、省略形は避けてください。

✔️ クラスがインターフェイスの標準実装であるクラスとインターフェイスのペアを定義する場合は、インターフェイス名の "I" プレフィックスによってのみ名前が異なっていることを確認してください。

ジェネリック型パラメーターの名前

ジェネリックが .NET Framework 2.0 に追加されました。 この機能では、 型パラメーターと呼ばれる新しい種類の識別子が導入されました。

✔️ ジェネリック型パラメーターには、単一文字の名前が完全に自己説明的で、説明的な名前が付加価値を生まない場合を除き、分かりやすい名前を付けます。

✔️ 1 文字の型パラメーターを持つ型の型パラメーター名として T を使用することを検討してください。

public int IComparer<T> { ... }
public delegate bool Predicate<T>(T item);
public struct Nullable<T> where T:struct { ... }

✔️ DO は、わかりやすい型パラメーター名に Tプレフィックスを付けます。

public interface ISessionChannel<TSession> where TSession : ISession {
    TSession Session { get; }
}

✔️ 型パラメーターに配置された制約を名前に示すことを検討してください。

たとえば、ISession に制約されているパラメーターの名前を TSession にします。

共通型の名前

✔️ 特定の .NET Framework 型から派生した型に名前を付ける場合、または特定の .NET Framework 型を実装する場合は、次の表に示すガイドラインに従ってください。

基本型 派生型/実装型ガイドライン
System.Attribute ✔️ カスタム属性クラスの名前にサフィックス "Attribute" を追加します。
System.Delegate ✔️ イベントで使用されるデリゲートの名前にサフィックス "EventHandler" を追加します。

✔️ イベント ハンドラーとして使用されるデリゲート以外のデリゲートの名前にサフィックス "Callback" を追加します。

❌ サフィックス "Delegate" をデリゲートに追加しないでください。
System.EventArgs ✔️ サフィックス "EventArgs" を追加します。
System.Enum ❌ このクラスから派生しないでください。代わりに、言語でサポートされているキーワードを使用してください。たとえば、C# では、 enum キーワードを使用します。

❌ サフィックス "Enum" または "Flag" を追加しないでください。
System.Exception ✔️ サフィックス "Exception" を追加します。
IDictionary
IDictionary<TKey,TValue>
✔️ サフィックス "Dictionary" を追加します。 IDictionary は特定の種類のコレクションですが、このガイドラインは、次に示すより一般的なコレクション のガイドラインよりも優先されることに注意してください。
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
✔️ サフィックス "Collection" を追加します。
System.IO.Stream ✔️ サフィックス "Stream" を追加します。
CodeAccessPermission IPermission ✔️ サフィックス "Permission" を追加します。

列挙体の名前付け

列挙型の名前 (列挙型とも呼ばれます) は、一般的に標準の型命名規則 (PascalCasing など) に従う必要があります。 ただし、列挙型に特に適用される追加のガイドラインがあります。

✔️ 値がビット フィールドでない限り、列挙型には単数形の型名を使用してください。

✔️ ビット フィールドを持つ列挙型には、複数形の型名を使用してください(フラグ列挙型とも呼ばれます)。

❌ 列挙型名に "Enum" サフィックスを使用しないでください。

❌ 列挙型名に "フラグ" または "フラグ" サフィックスを使用しないでください。

❌ 列挙値名にプレフィックスを使用しないでください (ADO 列挙型の場合は "ad"、リッチ テキスト列挙型の場合は "rtf" など)。

Portions © 2005, 2009 Microsoft Corporation. 無断転載を禁じます。

フレームワーク設計ガイドライン:再利用可能な .NET ライブラリの規則、イディオム、パターン、Krzysztof Cwalina および Brad Abrams による第 2 版は、2008 年 10 月 22 日に Microsoft Windows 開発シリーズの一部として Addison-Wesley Professional によって公開されました。

こちらも参照ください