CA1710: Gli identificatori devono contenere il suffisso corretto
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 questo modo si riduce la curva di apprendimento necessaria per le nuove librerie software e i clienti possono confidare nel fatto che la libreria è stata sviluppata 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 |
Suffisso |
---|---|
Attributo |
|
EventArgs |
|
Eccezione |
|
Collection |
|
Dictionary |
|
Collection |
|
Collection o Queue |
|
Collection o Stack |
|
Collection |
|
Dictionary |
|
DataSet |
|
Collection o DataTable |
|
Stream |
|
Autorizzazione |
|
Condizione |
|
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 una raccolta di elementi specifici, presentano nomi che terminano con la parola "Collection".Una raccolta di oggetti Queue, ad esempio, presenterebbe il nome "QueueCollection".Il suffisso "Collection" indica che i membri della raccolta 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 una raccolta di oggetti DataTable formati a loro volta da raccolte di oggetti System.Data.DataColumn e System.Data.DataRow, tra gli altri.Queste raccolte implementano ICollection tramite la classe base System.Data.InternalDataCollectionBase.
Come correggere le violazioni
Rinominare il tipo in modo da utilizzare come suffisso il termine corretto.
Esclusione di avvisi
L'esclusione di un avviso è sicura per utilizzare il suffisso "Collection" se il tipo è una struttura dei 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 una raccolta di un tipo specifico, ad esempio StringCollection, non escludere un avviso da questa regola poiché il suffisso indica che il tipo 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
CA1711: Gli identificatori non devono contenere un suffisso non corretto