CA1700: не следует называть значения перечислений именем "Reserved"
TypeName |
DoNotNameEnumValuesReserved |
CheckId |
CA1700 |
Категория |
Microsoft.Naming |
Критическое изменение |
Критическое изменение |
Причина
Имя элемента члена перечисления содержит слово "reserved".
Описание правила
В данном правиле предполагается, что член перечисления, имя которого содержит слово "reserved", не используется в настоящее время, а является местозаполнителем, который будет в дальнейшем переименован или удален.Переименование или удаление элемента — это критическое изменение.Не следует предполагать, что пользователи не станут обращать внимания на этот член только потому, что его имя содержит слово «reserved»; также что пользователи прочтут документацию и будут следовать ей.Более того, поскольку зарезервированные элементы отображаются в обозревателях объектов и интегрированных средах разработки, может возникнуть неразбериха относительно того, какие элементы на самом деле используются.
Вместо использования зарезервированного элемента следует добавить в перечисление новый элемент в будущей версии.В большинстве случаев добавление нового элемента не является критическим изменением, если из-за добавления не изменяются значения исходных элементов.
В некоторых случаях добавление нового элемента является критическим изменением, даже если из-за добавления не изменяются значения исходных элементов.Во-первых, новый элемент не может возвращаться из существующих процедур в коде без изменения вызывающих объектов, которые используют оператор switch (Select в Visual Basic) для возвращаемого значения; этот оператор включает весь список элементов и по умолчанию создает исключение.Кроме того, может возникнуть ситуация, когда код клиента не сможет обработать изменение в поведении таких методов отражения как Enum.IsDefined.Таким образом, если новый член должен возвращаться из существующих методов или происходит несовместимость известного приложения из-за использования плохого отражения, единственным возможным решением является:
Добавление нового перечисления, который содержит исходные и новые элементы.
Пометка исходного перечисления с помощью ObsoleteAttribute атрибута.
Применяйте такую же процедуру для типов, видимых снаружи, и для элементов, раскрывающих исходное представление.
Устранение нарушений
Чтобы исправить нарушение этого правила, удалите или переименуйте элемент.
Отключение предупреждений
Можно безопасно отключать предупреждения этого правила, если элемент используется в настоящее время или если библиотеки уже были поставлены заказчику ранее.
Связанные правила
CA2217: не следует помечать перечисления атрибутом FlagsAttribute
CA1712: не добавляйте имя типа перед перечисляемыми значениями
CA1028: хранилище перечислений должно иметь тип Int32
CA1008: перечисляемые типы должны иметь нулевое значение
CA1027: следует помечать перечисления атрибутом FlagsAttribute