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


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

Обновлен: Ноябрь 2007

TypeName

DoNotNameEnumValuesReserved

CheckId

CA1700

Категория

Microsoft.Naming

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

Критическое

Причина

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

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

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

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

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

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

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

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

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

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

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

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

Хранилище перечислений должно быть типа Int32

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

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