Поделиться через


CA1700: не следует называть значения перечислений именем "Reserved"

TypeName

DoNotNameEnumValuesReserved

CheckId

CA1700

Категория

Microsoft.Naming

Критическое изменение

Критическое изменение

Причина

Имя элемента члена перечисления содержит слово "reserved".

Описание правила

В данном правиле предполагается, что член перечисления, имя которого содержит слово "reserved", не используется в настоящее время, а является местозаполнителем, который будет в дальнейшем переименован или удален.Переименование или удаление элемента — это критическое изменение.Не следует предполагать, что пользователи не станут обращать внимания на этот член только потому, что его имя содержит слово «reserved»; также что пользователи прочтут документацию и будут следовать ей.Более того, поскольку зарезервированные элементы отображаются в обозревателях объектов и интегрированных средах разработки, может возникнуть неразбериха относительно того, какие элементы на самом деле используются.

Вместо использования зарезервированного элемента следует добавить в перечисление новый элемент в будущей версии.В большинстве случаев добавление нового элемента не является критическим изменением, если из-за добавления не изменяются значения исходных элементов.

В некоторых случаях добавление нового элемента является критическим изменением, даже если из-за добавления не изменяются значения исходных элементов.Во-первых, новый элемент не может возвращаться из существующих процедур в коде без изменения вызывающих объектов, которые используют оператор switch (Select в Visual Basic) для возвращаемого значения; этот оператор включает весь список элементов и по умолчанию создает исключение.Кроме того, может возникнуть ситуация, когда код клиента не сможет обработать изменение в поведении таких методов отражения как Enum.IsDefined.Таким образом, если новый член должен возвращаться из существующих методов или происходит несовместимость известного приложения из-за использования плохого отражения, единственным возможным решением является:

  1. Добавление нового перечисления, который содержит исходные и новые элементы.

  2. Пометка исходного перечисления с помощью ObsoleteAttribute атрибута.

Применяйте такую же процедуру для типов, видимых снаружи, и для элементов, раскрывающих исходное представление.

Устранение нарушений

Чтобы исправить нарушение этого правила, удалите или переименуйте элемент.

Отключение предупреждений

Можно безопасно отключать предупреждения этого правила, если элемент используется в настоящее время или если библиотеки уже были поставлены заказчику ранее.

Связанные правила

CA2217: не следует помечать перечисления атрибутом FlagsAttribute

CA1712: не добавляйте имя типа перед перечисляемыми значениями

CA1028: хранилище перечислений должно иметь тип Int32

CA1008: перечисляемые типы должны иметь нулевое значение

CA1027: следует помечать перечисления атрибутом FlagsAttribute