CA1710: 識別子は、正しいサフィックスを含んでいなければなりません
TypeName |
IdentifiersShouldHaveCorrectSuffix |
CheckId |
CA1710 |
分類 |
Microsoft.Naming |
互換性に影響する変更点 |
あり |
原因
ID に正しいサフィックスが含まれません。
規則の説明
名前付け規則によると、特定の基本型を拡張した型、特定のインターフェイスを実装する型、またはそのような型の派生型は、基本型やインターフェイスに関連するサフィックスを名前に付けます。
名前付け規則では、共通言語ランタイムをターゲットとするライブラリの統一的な名前の付け方が規定されています。これにより、新しいソフトウェア ライブラリを習得するまでの時間を短縮でき、マネージ コード開発の専門家によってライブラリが開発されたという信頼を顧客に与えることができます。
次の表は、サフィックスが関連付けられている基本型とインターフェイスの一覧です。
基本型/インターフェイス |
サフィックス |
---|---|
Attribute |
|
EventArgs |
|
Exception |
|
Collection |
|
Dictionary |
|
Collection |
|
Collection または Queue |
|
Collection または Stack |
|
Collection |
|
Dictionary |
|
DataSet |
|
Collection または DataTable |
|
Stream |
|
Permission |
|
状態 |
|
イベント ハンドラーのデリゲート |
EventHandler |
型で ICollection を実装し、汎用的な種類のデータ構造 (ディクショナリ、スタック、キューなど) の型である場合、型の用途に合わせた名前を付けることができます。
型で ICollection を実装し、その型が特定項目のコレクションである場合、"Collection" という単語を名前の末尾に付けます。たとえば、Queue オブジェクトのコレクション名は、"QueueCollection" です。"Collection" サフィックスによって、コレクションのメンバーを foreach (Visual Basic では For Each) ステートメントを使用して列挙できることがわかります。
IDictionary を実装した型の名前は、"Dictionary" という単語で終わります。これは、IEnumerable または ICollection を実装している場合にも該当します。"Collection" と "Dictionary" のサフィックスを付ける名前付け規則によって、次に示す 2 つの列挙パターンを区別できるようになります。
"Collection" サフィックスのある型は、次の列挙パターンに従います。
foreach(SomeType x in SomeCollection) { }
"Dictionary" サフィックスのある型は、次の列挙パターンに従います。
foreach(SomeType x in SomeDictionary.Values) { }
DataSet オブジェクトは、DataTable オブジェクトのコレクションで構成されます (特に、DataColumn オブジェクトと DataRow オブジェクトのコレクションで構成されます)。これらのコレクションでは、基本の InternalDataCollectionBase クラスによって、ICollection を実装します。
違反の修正方法
正しいサフィックスを付けるように、型の名前を変更します。
警告を抑制する状況
型が汎用的なデータ構造で、拡張される可能性がある場合や任意のさまざまな項目を保持する場合は、"Collection" サフィックスを使用する警告を抑制しても安全です。この場合、データ構造の実装、パフォーマンスなどの特性を示す情報を含む名前にすると、便利です (BinaryTree など)。型で特定のコレクションを表す場合 (StringCollection など)、この規則による警告を抑制しないでください。サフィックスによって、この型が foreach ステートメントで列挙できることがわかるためです。
他のサフィックスについては、この規則による警告を抑制しないでください。型名のサフィックスから、型の用途を判断しやすくなります。
関連規則
CA1711: 識別子は、不適切なサフィックスを含むことはできません