Condividi tramite


Non denominare 'Reserved' i valori di enumerazione

TypeName

DoNotNameEnumValuesReserved

CheckId

CA1700

Category

Microsoft.Naming

Breaking Change

Breaking

Causa

Il nome di un membro di enumerazione contiene la parola "reserved".

Descrizione della regola

Questa regola presuppone che un membro di enumerazione con un nome che contiene la parola "reserved" non sia attualmente utilizzato, ma sia un segnaposto che dovrà essere rinominato o rimosso in una versione futura. La ridenominazione o rimozione di un membro è ritenuta una modifica sostanziale. Non è opportuno presupporre che gli utenti ignorino un membro solo perché il relativo nome contiene "reserved" né che leggano o si attengano alla documentazione. Inoltre, poiché i membri riservati vengono visualizzati in visualizzatori oggetti e in ambienti di sviluppo integrati, è possibile che si crei confusione su quali membri vengono effettivamente utilizzati.

Anziché utilizzare un membro riservato, aggiungere un nuovo membro all'enumerazione nella versione futura. Nella maggior parte dei casi, l'aggiunta del nuovo membro non costituisce una modifica sostanziale, purché l'aggiunta non comporti la modifica dei valori dei membri originali.

È presente un certo numero di casi in cui l'aggiunta di un membro costituisce una modifica sostanziale anche se i membri originali mantengono i relativi valori originali. Principalmente il nuovo membro non può essere restituito da percorsi di codice esistenti senza causare l'interruzione dei chiamanti che utilizzano un'istruzione switch (Select in Visual Basic) sul valore restituito che comprende l'intero elenco di membri che generano un'eccezione nel caso predefinito. Un secondo problema è costituito dal fatto che il codice del client potrebbe non essere in grado di gestire la modifica di comportamento da metodi di reflection quali System.Enum.IsDefined(System.Type,System.Object). Di conseguenza, se il nuovo membro deve essere restituito da metodi esistenti o se è presente un'incompatibilità nota tra applicazioni a causa del ridotto utilizzo della reflection, l'unica soluzione consiste nell'aggiungere una nuova enumerazione contenente i membri originali e nuovi e di contrassegnare l'enumerazione originale con l'attributo System.ObsoleteAttribute. Seguire la stessa procedura per qualsiasi membro o tipo visibile esternamente che espone l'enumerazione originale.

Correzione di violazioni

Per correggere una violazione di questa regola, rimuovere o rinominare il membro.

Esclusione di avvisi

L'esclusione di un avviso da questa regola è sicura se il membro è attualmente utilizzato oppure per le librerie fornite in precedenza.

Regole correlate

Non contrassegnare le enumerazioni con FlagsAttribute

Non utilizzare nomi di tipo come prefisso nei valori di enumerazione

L'archivio di enum deve essere Int32

Gli enum devono avere valore zero

Sostituire gli enum con FlagsAttribute