CA1700: 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.
In alcuni casi, 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 Enum.IsDefined.Di conseguenza, se il nuovo membro deve essere restituito da metodi esistenti o se si verifica un'incompatibilità nota tra applicazioni a causa del ridotto utilizzo della reflection, l'unica soluzione è:
Aggiungere una nuova enumerazione contenente i membri originali e nuovi.
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.
Come correggere le 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 per un membro attualmente utilizzato oppure per le librerie fornite in precedenza.
Regole correlate
CA2217: Non contrassegnare le enumerazioni con FlagsAttribute
CA1712: Non utilizzare nomi di tipo come prefisso nei valori di enumerazione
CA1028: L'archivio di enum deve essere Int32