Gli identificatori devono contenere il suffisso corretto
Aggiornamento: novembre 2007
TypeName |
IdentifiersShouldHaveCorrectSuffix |
CheckId |
CA1710 |
Category |
Microsoft.Naming |
Breaking Change |
Breaking |
Causa
Un identificatore non contiene il suffisso corretto.
Descrizione della regola
Per convenzione i nomi dei tipi che estendono determinati tipi di base o che implementano determinate interfacce o dei tipi derivati da questi tipi contengono un suffisso associato al tipo di base o all'interfaccia.
Le convenzioni di denominazione forniscono un aspetto comune alle librerie che si avvalgono di Common Language Runtime. In tal modo si riduce la curva di apprendimento necessaria per le nuove librerie software e i clienti possono confidare nel fatto che la libreria è stata creata da un esperto nello sviluppo di codice gestito.
Nella tabella riportata di seguito sono elencati i tipi di base e le interfacce a cui sono associati suffissi.
Tipo di base/Interfaccia |
Suffix |
---|---|
Attribute |
|
EventArgs |
|
Exception |
|
Collection |
|
Dictionary |
|
Collection |
|
Collection o Queue |
|
Collection o Stack |
|
Collection |
|
Dictionary |
|
DataSet |
|
Collection o DataTable |
|
Stream |
|
Permission |
|
Condition |
|
Delegato del gestore eventi. |
EventHandler |
Per i tipi che implementano ICollection e rappresentano un tipo generalizzato di struttura di dati, ad esempio dizionario, stack o coda, sono consentiti nomi che forniscono informazioni significative relative all'utilizzo previsto del tipo.
I tipi che implementano ICollection e rappresentano un insieme di elementi specifici, presentano nomi che terminano con la parola "Collection". Un insieme di oggetti Queue, ad esempio, presenterebbe il nome "QueueCollection". Il suffisso "Collection" indica che i membri dell'insieme possono essere enumerati utilizzando l'istruzione foreach (For Each in Visual Basic).
I tipi che implementano IDictionary presentano nomi che terminano con la parola "Dictionary" anche se il tipo implementa anche IEnumerable o ICollection. Le convenzioni di denominazione dei suffissi "Collection" e "Dictionary" consentono agli utenti di fare distinzione tra i due modelli di enumerazione riportati di seguito.
I tipi con il suffisso "Collection" seguono questo modello di enumerazione:
foreach(SomeType x in SomeCollection) { }
I tipi con il suffisso "Dictionary" seguono questo modello di enumerazione:
foreach(SomeType x in SomeDictionary.Values) { }
Un oggetto DataSet è dato da un insieme di oggetti DataTable formati a loro volta da insiemi di oggetti System.Data.DataColumn e System.Data.DataRow, tra gli altri. Questi insiemi implementano ICollection tramite la classe base System.Data.InternalDataCollectionBase.
Correzione di violazioni
Rinominare il tipo in modo da utilizzare come suffisso il termine corretto.
Esclusione di avvisi
L'esclusione di un avviso è sicura per l'utilizzo del suffisso "Collection" se il tipo è una struttura di dati generalizzata che può essere estesa o che contiene un set arbitrario di elementi diversi. In questo caso, può essere opportuno utilizzare un nome che fornisca informazioni significative relative all'implementazione, alle prestazioni o ad altre caratteristiche della struttura di dati, ad esempio BinaryTree. Nei casi in cui il tipo rappresenta un insieme di un tipo specifico, ad esempio StringCollection, non escludere un avviso da questa regola poiché il suffisso indica il tipo che può essere enumerato con un'istruzione foreach.
Per gli altri suffissi, non escludere un avviso da questa regola. Il suffisso consente di rendere evidente l'utilizzo previsto dal nome del tipo.
Regole correlate
Gli identificatori non devono contenere un suffisso non corretto