다음을 통해 공유


제네릭 형식에 매개 변수를 너무 많이 사용하지 마십시오.

업데이트: 2007년 11월

TypeName

AvoidExcessiveParametersOnGenericTypes

CheckId

CA1005

범주

Microsoft.Design

변경 수준

주요 변경

원인

외부에서 볼 수 있는 제네릭 형식에 세 개 이상의 형식 매개 변수가 있습니다.

규칙 설명

제네릭 형식에 포함된 형식 매개 변수가 많을수록 각 형식 매개 변수가 무엇을 나타내는지를 파악하거나 기억하기가 더 어렵습니다. 보통은 List<T>에서처럼 하나의 형식 매개 변수를 사용하고 특정한 경우에는 Dictionary<TKey, TValue>에서처럼 두 개의 형식 매개 변수를 사용하는 것이 좋습니다. 예를 들어, C#의 TooManyTypeParameters<T, K, V> 또는 Visual Basic의 TooManyTypeParameters(Of T, K, V)와 같이 형식 매개 변수가 세 개 이상일 경우에는 대부분의 사용자가 사용하기에 너무 어렵습니다.

위반 문제를 해결하는 방법

이 규칙 위반 문제를 해결하려면 디자인을 변경하여 세 개 이상의 형식 매개 변수를 사용하지 않도록 합니다.

경고를 표시하지 않는 경우

디자인에 반드시 세 개 이상의 형식 매개 변수가 필요한 경우가 아니라면 경고를 표시하십시오. 제네릭을 이해하고 사용하기 쉬운 구문으로 제공하면 학습에 걸리는 시간이 줄어들고 더 많은 사용자가 새로운 라이브러리를 선택하게 됩니다.

예제

다음 예제에서는 규칙을 위반하는 세 개의 제네릭 형식 매개 변수를 정의하는 클래스를 보여 줍니다.

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
    {
    };
}

관련 규칙

컬렉션은 제네릭 인터페이스를 구현해야 합니다.

정적 멤버를 제네릭 형식으로 선언하지 마십시오.

제네릭 목록을 노출하지 마십시오.

멤버 시그니처에 제네릭 형식을 중첩하지 마십시오.

제네릭 메서드는 형식 매개 변수를 제공해야 합니다.

제네릭 이벤트 처리기 인스턴스를 사용하십시오.

적합한 제네릭을 사용하십시오.

참고 항목

참조

제네릭(C# 프로그래밍 가이드)