Condividi tramite


Evitare un uso eccessivo di parametri nei tipi generici

Aggiornamento: novembre 2007

TypeName

AvoidExcessiveParametersOnGenericTypes

CheckId

CA1005

Categoria

Microsoft.Design

Breaking Change

Breaking

Causa

Un tipo generico visibile esternamente presenta più di due parametri di tipo.

Descrizione della regola

Quanto più è alto il numero di parametri di tipo contenuti, maggiore è la difficoltà di sapere e ricordare cosa rappresenta ciascun parametro. Di solito, è ovvio con un parametro di tipo, come in List<T>, e in alcuni casi anche con due, come in Dictionary<TKey, TValue>. Se i parametri di tipo sono più di due, la difficoltà si rivela eccessiva per la maggior parte degli utenti, ad esempio, TooManyTypeParameters<T, K, V> in C# o TooManyTypeParameters(Of T, K, V) in Visual Basic.

Correzione di violazioni

Per correggere una violazione di questa regola, modificare la progettazione in modo che non vengano utilizzati più di due parametri di tipo.

Esclusione di avvisi

Non escludere avvisi per questa regola a meno che la progettazione non richieda assolutamente più di due parametri di tipo. La presenza di generics in una sintassi facile da comprendere e utilizzare riduce il tempo necessario all'apprendimento e aumenta la frequenza di adozione di nuove librerie.

Esempio

Nell'esempio seguente viene illustrata una classe che definisce 3 parametri di tipo generico che violano la regola.

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

Regole correlate

Gli insiemi devono implementare un'interfaccia generica

Non dichiarare membri statici su tipi generici

Non esporre elenchi generici

Non nidificare tipi generici nelle firme dei membri

I metodi generici devono fornire parametri di tipo

Utilizzare istanze di gestori eventi generici

Utilizzare generics quando opportuno

Vedere anche

Riferimenti

Generics (Guida per programmatori C#)