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