更新 : 2007 年 11 月
TypeName |
AvoidExcessiveParametersOnGenericTypes |
CheckId |
CA1005 |
カテゴリ |
Microsoft.Design |
互換性に影響する変更点 |
あり |
原因
外部から参照可能なジェネリック型に、3 つ以上の型パラメータがあります。
規則の説明
ジェネリック型に含まれる型パラメータが増えれば増えるほど、それぞれの型パラメータが表す意味を調べることや覚えることが難しくなります。通常、List<T> のように型パラメータが 1 つの場合や、Dictionary<TKey, TValue> のように型パラメータが 2 つの場合、意味は明確です。型パラメータが 3 つ以上になると、たとえば C# では TooManyTypeParameters<T, K, V>、Visual Basic では TooManyTypeParameters(Of T, K, V) のような場合、ほとんどのユーザーには意味を把握することが困難になります。
違反の修正方法
この規則違反を修正するには、3 つ以上の型パラメータを使用しないようにデザインを変更します。
警告を抑制する状況
デザインで 3 つ以上の型パラメータが絶対に必要な場合を除き、この規則による警告を抑制しないでください。理解しやすく使いやすい構文でジェネリック型を指定することで、習得に必要な時間が短縮され、新しいライブラリの採用率が向上します。
使用例
規則に違反して 3 つのジェネリック型パラメータを定義しているクラスの例を次に示します。
Imports System
Namespace Samples
' Violates this rule
Public Class Tuple(Of T1, T2, T3)
End Class
End Namespace
using System;
namespace Samples
{
// Violates this rule
public class Tuple<T1, T2, T3>
{
}
}
using namespace System;
namespace Samples
{
// Violaties this rule
generic <typename T1, typename T2, typename T3>
public ref class Tuple
{
};
}
関連規則
コレクションは、ジェネリック インターフェイスを実装しなければなりません
ジェネリック メソッドは型パラメータを指定しなければなりません