CA1700: Nepojmenovávejte výčty hodnot 'Reserved'
TypeName |
DoNotNameEnumValuesReserved |
CheckId |
CA1700 |
Kategorie |
Microsoft.Naming |
Narušující změna |
Narušující |
Příčina
Název členu výčtu obsahuje slovo "reserved".
Popis pravidla
Toto pravidlo předpokládá, že člen výčtu, který má název obsahující "reserved", není aktuálně používán, ale je zástupným symbolem k přejmenování nebo odstranění v budoucí verzi.Přejmenování nebo odstranění členu je narušující změnou.Neočekávejte, že uživatelé budou člen ignorovat jen proto, že název obsahuje "reserved", ani nelze spoléhat na uživatele, že budou číst a dodržovat dokumentaci.Protože se vyhrazené členy zobrazí v prohlížečích objektů a inteligentně integrovaných vývojových prostředích, mohou navíc způsobit nejasnosti v tom, které členy jsou ve skutečnosti používány.
Namísto používání vyhrazeného členu přidejte do výčtu budoucí verze nový člen.Ve většině případů není přidání nového členu narušující změnou, pokud však přidání nezpůsobí změnu hodnot původních členů.
V omezeném počtu případů je přidání členu narušující změnou i v případě, že si původní členové zachovají své původní hodnoty.Především nemůže být nový člen vrácen z existujících cest kódu bez přerušení volajících, kteří používají příkaz switch (Select v aplikaci Visual Basic) na vrácené hodnotě, která zahrnuje celý seznam členů, a ve výchozím případě vyvolají výjimku.Druhořadým zájmem je, že klientský kód nemusí zpracovávat změnu chování z metod reflexe, například Enum.IsDefined.Proto, pokud má být nový člen vrácen z existujících metod nebo dojde v důsledku špatného použití reflexe ke známé inkompabilitě aplikace, jediným nenarušujícícím řešením je:
Přidání nového výčtu, který obsahuje původní a nové členy.
Označení původního výčtu atributem ObsoleteAttribute.
Stejným způsobem postupujte pro všechny externě viditelné typy nebo členy, které ukazují původní výčet.
Jak vyřešit porušení
Porušení tohoto pravidla lze napravit odstraněním nebo přejmenováním členu.
Kdy potlačit upozornění
Upozornění je bezpečné potlačit pro člen, který je aktuálně používán, nebo knihovny, které byly již dříve odeslány.
Související pravidla
CA2217: Neoznačujte výčty pomocí FlagsAttribute
CA1712: Nezačínejte hodnoty výčtu s názvem typu
CA1028: Úložiště výčtu by měl být Int32