Compartir a través de


No nombrar valores de enumeración como 'Reserved'

Actualización: noviembre 2007

Nombre de tipo

DoNotNameEnumValuesReserved

Identificador de comprobación

CA1700

Categoría

Microsoft.Naming

Cambio problemático

Motivo

El nombre de un miembro de enumeración contiene la palabra "reserved".

Descripción de la regla

Esta regla supone que un miembro de la enumeración con un nombre que contiene la palabra "reserved" no se utiliza actualmente pero hace de marcador de posición para que se pueda quitar o cambiar el nombre en una versión posterior. Quitar o cambiar el nombre de un miembro es un cambio importante. No se debe esperar que los usuarios omitan un miembro porque contenga la palabra "reserved" ni se puede confiar en que los usuarios lean o apliquen la documentación. Además, puesto que los miembros reservados aparecen en los exploradores de objetos y en los entornos de desarrollo integrados, pueden provocar confusiones como no saber qué miembros se están utilizando actualmente.

En lugar de utilizar un miembro reservado, agregue un nuevo miembro a la enumeración en la versión futura. En la mayoría de los casos, agregar un nuevo miembro no supone un cambio importante, siempre que la inclusión no provoque cambios en los valores de los miembros originales.

Existe un número limitado de casos en los que la inclusión de un miembro es un cambio importante incluso cuando los miembros originales mantienen sus valores originales. Principalmente, las rutas de acceso a código no pueden devolver el nuevo miembro sin llamadores importantes que utilicen una instrucción switch (Select en Visual Basic) en el valor devuelto que abarca la lista completa de miembros que producen una excepción en el caso predeterminado. Un aspecto secundario es que el código de cliente no podría controlar el cambio de comportamiento de los métodos de reflexión como Enum.IsDefined. Por consiguiente, si no es necesario que los métodos existentes devuelvan el nuevo miembro o que exista una incompatibilidad conocida con la aplicación debido a un uso pobre de la reflexión, entonces la única solución menos drástica es agregar una nueva enumeración que contenga los miembros originales y los nuevos así como marcar la enumeración original con el atributo System.ObsoleteAttribute. Siga el mismo procedimiento para cualquiera de los tipos visibles externamente o miembros que exponen la enumeración original.

Cómo corregir infracciones

Para corregir una infracción de esta regla, quite o cambie el nombre del miembro.

Cuándo suprimir advertencias

Es seguro suprimir una advertencia de esta regla si se usa actualmente el miembro o cuando se trata de bibliotecas distribuidas previamente.

Reglas relacionadas

No marcar enumeraciones como FlagsAttribute

No utilizar prefijos en valores de enumeración con el nombre de tipo

El almacenamiento de enumeraciones debe ser Int32

Las enumeraciones deben tener un valor igual a cero

Marcar enumeraciones con FlagsAttribute