Partager via


Ne nommez pas les valeurs enum 'Reserved'

Mise à jour : novembre 2007

TypeName

DoNotNameEnumValuesReserved

CheckId

CA1700

Catégorie

Microsoft.Naming

Modification avec rupture

Oui

Cause

Le nom d'un membre de l'énumération contient le mot "reserved".

Description de la règle

Cette règle suppose qu'un membre de l'énumération dont le nom contient le terme "reserved" n'est pas utilisé actuellement, mais constitue un espace réservé à renommer ou à supprimer une version ultérieure. Renommer ou supprimer un membre constitue une modification avec rupture. Vous ne devez pas compter sur le fait que les utilisateurs ignorent un membre simplement parce que son nom contient le terme "reserved" ni sur le fait qu'ils lisent ou se conforment à la documentation. En outre, sachant que les membres réservés apparaissent dans des explorateurs d'objets et des environnements de développement intégré intelligents, ils peuvent provoquer une confusion quant à l'identité des membres réellement utilisés.

Au lieu d'utiliser un membre réservé, ajoutez un nouveau membre à l'énumération dans la version future. Dans la plupart des cas, l'ajout du nouveau membre ne constitue pas une modification avec rupture, tant qu'il ne provoque aucune modification des valeurs des membres d'origine.

Dans un nombre restreint de cas, l'ajout d'un membre constitue une modification avec rupture et ce même si les membres d'origine conservent leurs valeurs d'origine. À l'origine, le nouveau membre ne peut pas être retourné depuis les chemins d'accès d'un code existant sans arrêter les appelants qui utilisent une instruction switch (Select en Visual Basic) sur la valeur de retour qui comprend la liste intégrale des membres et qui lève une exception dans le cas par défaut. Un problème secondaire tient dans ce qu'un code client peut ne pas gérer la modification de comportement à partir de méthodes de réflexion telles que Enum.IsDefined. En conséquence, si le nouveau membre doit être retourné à partir de méthodes existantes ou si une incompatibilité d'application connue est due à une utilisation médiocre de la réflexion, la seule solution sans rupture consiste à ajouter une nouvelle énumération qui contient les membres originaux et nouveaux, puis à marquer l'énumération d'origine avec l'attribut System.ObsoleteAttribute. Suivez la même procédure pour tout type ou membre visible de l'extérieur qui expose l'énumération d'origine.

Comment corriger les violations

Pour corriger une violation de cette règle, supprimez ou renommez le membre.

Quand supprimer les avertissements

Il est possible de supprimer sans risque un avertissement de cette règle si le membre est utilisé actuellement ou dans le cas de bibliothèques précédemment livrées.

Règles connexes

Ne pas marquer les enums avec FlagsAttribute

N'ajoutez pas le nom de type en guise de préfixe à des valeurs enum

Enum Storage doit être Int32

Les enums doivent avoir la valeur zéro

Marquer les enums avec FlagsAttribute