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