クラス、構造体、およびインターフェイスの名前Names of Classes, Structs, and Interfaces

次に示す名前付けのガイドラインは、一般的な型の名前付けに適用されます。The naming guidelines that follow apply to general type naming.

✔️は、文字の大文字と小文字の区別を使用して、名詞または名詞句でクラスと構造体に名前を付けます。✔️ DO name classes and structs with nouns or noun phrases, using PascalCasing.

これにより、動詞句を使用して名前が付けられたメソッドの型名が区別されます。This distinguishes type names from methods, which are named with verb phrases.

✔️には、形容詞のフレーズを使用するか、名詞や名詞句を使用することもあります。✔️ DO name interfaces with adjective phrases, or occasionally with nouns or noun phrases.

名詞と名詞句を使用することはほとんどなく、型がインターフェイスではなく抽象クラスであることを示している可能性があります。Nouns and noun phrases should be used rarely and they might indicate that the type should be an abstract class, and not an interface.

❌ クラス名にプレフィックス (例: "C") を指定しないでください。❌ DO NOT give class names a prefix (e.g., "C").

✔️派生クラスの名前を基底クラスの名前で終了することを検討してください。✔️ CONSIDER ending the name of derived classes with the name of the base class.

これは非常に読みやすく、リレーションシップについて明確に説明しています。This is very readable and explains the relationship clearly. コードでのこの例としては、の一種であるがあり ArgumentOutOfRangeException Exception SerializableAttribute Attribute ます。これは、の一種です。Some examples of this in code are: ArgumentOutOfRangeException, which is a kind of Exception, and SerializableAttribute, which is a kind of Attribute. ただし、このガイドラインを適用するには、適切な判断を使用することが重要です。たとえば、クラスは Button イベントの一種であり、 Control Control 名前には表示されません。However, it is important to use reasonable judgment in applying this guideline; for example, the Button class is a kind of Control event, although Control doesn’t appear in its name.

型がインターフェイスであることを示すには、インターフェイス名の前に I という文字を付ける✔️ます。✔️ DO prefix interface names with the letter I, to indicate that the type is an interface.

たとえば、 IComponent (わかりやすい名詞)、 ICustomAttributeProvider (名詞句)、 IPersistable (形容詞) は、適切なインターフェイス名です。For example, IComponent (descriptive noun), ICustomAttributeProvider (noun phrase), and IPersistable (adjective) are appropriate interface names. 他の型名と同様に、省略形を避けます。As with other type names, avoid abbreviations.

クラスがインターフェイスの標準実装であるクラスインターフェイスのペアを定義する場合は、名前がインターフェイス名の "I" プレフィックスによってのみ異なることを✔️してください。✔️ DO ensure that the names differ only by the "I" prefix on the interface name when you are defining a class–interface pair where the class is a standard implementation of the interface.

ジェネリック型パラメーターの名前Names of Generic Type Parameters

ジェネリックが .NET Framework 2.0 に追加されました。Generics were added to .NET Framework 2.0. この機能では、 型パラメーター と呼ばれる新しい種類の識別子が導入されました。The feature introduced a new kind of identifier called type parameter.

1文字の名前が完全に記述されており、わかりやすい名前で値が追加されない場合を除き、ジェネリック型パラメーターにわかりやすい名前を付ける✔️ます。✔️ DO name generic type parameters with descriptive names unless a single-letter name is completely self-explanatory and a descriptive name would not add value.

1つの T 1 文字の型パラメーターを持つ型の型パラメーター名としてを使用することを✔️してください。✔️ CONSIDER using T as the type parameter name for types with one single-letter type parameter.

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

✔️は、で説明する型パラメーター名をプレフィックスとして使用 T します。✔️ DO prefix descriptive type parameter names with T.

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

パラメーターの名前の型パラメーターに設定されている制約を示す✔️ます。✔️ CONSIDER indicating constraints placed on a type parameter in the name of the parameter.

たとえば、に制約されたパラメーターを ISession 呼び出すことができ TSession ます。For example, a parameter constrained to ISession might be called TSession.

共通型の名前Names of Common Types

✔️は、次の表に記載されているガイドラインに従って、特定の .NET Framework 型から派生した型に名前を付けることができます。✔️ DO follow the guidelines described in the following table when naming types derived from or implementing certain .NET Framework types.

基本型Base Type 派生/実装型のガイドラインDerived/Implementing Type Guideline
System.Attribute カスタム属性クラスの名前にサフィックス "Attribute" を追加✔️ます。✔️ DO add the suffix "Attribute" to names of custom attribute classes.
System.Delegate ✔️は、イベントで使用されるデリゲートの名前に "EventHandler" というサフィックスを追加します。✔️ DO add the suffix "EventHandler" to names of delegates that are used in events.

イベントハンドラーとして使用されていないデリゲートの名前に "Callback" というサフィックスを追加✔️ます。✔️ DO add the suffix "Callback" to names of delegates other than those used as event handlers.

❌ デリゲートにサフィックス "Delegate" を追加しないでください。❌ DO NOT add the suffix "Delegate" to a delegate.
System.EventArgs サフィックス "EventArgs" を追加✔️ます。✔️ DO add the suffix "EventArgs."
System.Enum ❌ このクラスから派生させることはできません。代わりに、お使いの言語でサポートされているキーワードを使用してください。たとえば、C# では、キーワードを使用し enum ます。❌ DO NOT derive from this class; use the keyword supported by your language instead; for example, in C#, use the enum keyword.

❌ サフィックス "Enum" または "Flag" は追加しないでください。❌ DO NOT add the suffix "Enum" or "Flag."
System.Exception サフィックス "Exception" を追加✔️ます。✔️ DO add the suffix "Exception."
IDictionary
IDictionary<TKey,TValue>
サフィックス "Dictionary" を追加✔️ます。✔️ DO add the suffix "Dictionary." IDictionaryは特定の種類のコレクションであることに注意してくださいが、このガイドラインは、次に示す一般的なコレクションのガイドラインよりも優先されます。Note that IDictionary is a specific type of collection, but this guideline takes precedence over the more general collections guideline that follows.
IEnumerable
ICollection
IList
IEnumerable<T>
ICollection<T>
IList<T>
サフィックス "Collection" を追加✔️ます。✔️ DO add the suffix "Collection."
System.IO.Stream サフィックス "Stream" を追加✔️ます。✔️ DO add the suffix "Stream."
CodeAccessPermission IPermission ✔️サフィックス "Permission" を追加します。✔️ DO add the suffix "Permission."

列挙型に名前を付けるNaming Enumerations

一般的に、列挙型の名前 (列挙型とも呼ばれます) は、標準的な型の名前付け規則に従う必要があります。Names of enumeration types (also called enums) in general should follow the standard type-naming rules (PascalCasing, etc.). ただし、列挙型に特に適用される追加のガイドラインがあります。However, there are additional guidelines that apply specifically to enums.

✔️値がビットフィールドでない限り、列挙体には単数型名を使用します。✔️ DO use a singular type name for an enumeration unless its values are bit fields.

✔️は、値としてビットフィールドを持つ列挙体に対して複数形の型名を使用します (flags enum とも呼ばれます)。✔️ DO use a plural type name for an enumeration with bit fields as values, also called flags enum.

❌ 列挙型の名前に "Enum" サフィックスを使用しないでください。❌ DO NOT use an "Enum" suffix in enum type names.

❌ 列挙型の名前に "Flag" または "Flags" サフィックスは使用しないでください。❌ DO NOT use "Flag" or "Flags" suffixes in enum type names.

❌ 列挙値の名前にプレフィックスを使用しないでください (たとえば、ADO 列挙型の場合は "ad"、リッチテキスト列挙型の場合は "rtf" など)。❌ DO NOT use a prefix on enumeration value names (e.g., "ad" for ADO enums, "rtf" for rich text enums, etc.).

©2005、2009 Microsoft Corporation の部分。すべての権限が予約されています。Portions © 2005, 2009 Microsoft Corporation. All rights reserved.

2008 年 10 月 22 日に Microsoft Windows Development シリーズの一部として、Addison-Wesley Professional によって発行された、Krzysztof Cwalina および Brad Abrams による「Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition」 (フレームワーク デザイン ガイドライン: 再利用可能な .NET ライブラリの規則、用法、パターン、第 2 版) から Pearson Education, Inc. の許可を得て再印刷されています。Reprinted by permission of Pearson Education, Inc. from Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries, 2nd Edition by Krzysztof Cwalina and Brad Abrams, published Oct 22, 2008 by Addison-Wesley Professional as part of the Microsoft Windows Development Series.

関連項目See also