Ensemble de règles d'analyse du code Règles de conception étendue Microsoft
L'ensemble de règles intitulé Règles de conception étendue Microsoft s'appuie sur les directives des Règles de conception de base pour optimiser la résolution des problèmes d'utilisation et de maintenance signalés, en mettant l'accent sur l'aide liée à l'affectation de noms. Vous devez envisager d'inclure cet ensemble de règles si votre projet comprend du code de bibliothèque ou si vous souhaitez appliquer les normes les plus élevées afin d'écrire du code facile à gérer.
Les Règles de conception étendue intègrent toutes les Règles de conception de base Microsoft. Les Règles de conception de base intègrent toutes les Règles Microsoft minimales recommandées. Pour plus d'informations, consultez Ensemble de règles d'analyse du code Règles de conception de base Microsoft et Ensemble de règles d'analyse du code Règles Microsoft minimales recommandées.
Le tableau suivant décrit toutes les règles de l'ensemble intitulé Règles de conception étendue Microsoft.
Règle |
Description |
---|---|
Assurez-vous que chacun de vos espaces de noms bénéficie d'une organisation logique, et qu'une raison valide justifie le placement des types dans un espace de noms peu rempli. |
|
Passer des types par référence (en utilisant out ou ref) nécessite une certaine expérience des pointeurs, de comprendre la différence entre les types valeur et les types référence, ainsi que la gestion de méthodes impliquant plusieurs valeurs de retour. Par ailleurs, la différence entre les paramètres out et ref est généralement peu comprise. |
|
Les interfaces définissent des membres qui fournissent un comportement ou un contrat d'utilisation. Les fonctionnalités décrites par l'interface peuvent être adoptées par tout type, indépendamment de l'endroit où le type figure dans la hiérarchie d'héritage. Un type implémente une interface en fournissant des implémentations pour les membres de celle-ci. Une interface vide ne définit aucun membre ; par conséquent, elle ne définit aucun contrat pouvant être implémenté. |
|
Passer des types par référence (en utilisant out ou ref) nécessite une certaine expérience des pointeurs, de comprendre la différence entre les types valeur et les types référence, ainsi que la gestion de méthodes impliquant plusieurs valeurs de retour. Les architectes de bibliothèques qui réalisent un travail de conception destiné à une audience générale ne doivent pas s'attendre à ce que les utilisateurs maîtrisent l'utilisation des paramètres out ou ref. |
|
Tous les arguments de référence passés aux méthodes visibles de l'extérieur doivent être vérifiés pour voir s'ils ont la valeur null. |
|
Un type est imbriqué de plus de quatre niveaux dans sa hiérarchie d'héritage. Les hiérarchies de type profondément imbriquées peuvent être difficiles à suivre, comprendre et gérer. |
|
Le nom d'un champ d'instance commence par « s_ » ou le nom d'un champ statique (partagé dans Visual Basic) commence par « m_ ». |
|
Un type ou une méthode a une faible valeur d'indice de maintenabilité. Un faible indice de maintenabilité indique qu'un type ou qu'une méthode est probablement difficile à maintenir et qu'il/elle se prête bien à une nouvelle conception. |
|
Cette règle mesure l'accouplement de classes en comptant le nombre de références de type uniques contenues dans un type ou une méthode. |
|
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. |
|
CA1701: La casse des mots composés de chaînes de ressources doit être correcte |
Chaque mot dans la chaîne de ressource est fractionné en jetons basés sur la casse. Chaque combinaison de deux jetons contiguë est vérifiée par la bibliothèque du correcteur orthographique Microsoft. S'il est reconnu, le mot produit une violation de la règle. |
Le nom d'un identificateur contient plusieurs mots et au moins l'un des mots semble être un mot composé qui ne présente pas une casse correcte. |
|
CA1703 : L'orthographe des chaînes de ressources doit être correcte |
Une chaîne de ressource contient un ou plusieurs mots qui ne sont pas reconnus par la bibliothèque du vérificateur d'orthographe Microsoft. |
CA1704 : Les identificateurs doivent être correctement orthographiés |
Le nom d'un identificateur visible de l'extérieur contient un ou plusieurs mots qui ne sont pas reconnus par la bibliothèque du vérificateur d'orthographe Microsoft. |
CA1707 : Les identificateurs ne doivent pas contenir de traits de soulignement |
Par convention, les noms d'identificateurs ne contiennent pas de trait de soulignement (_). Cette règle vérifie les espaces de noms, types, membres et paramètres. |
Par convention, les noms de paramètres utilisent la casse mixte ; les noms d'espaces de noms, de types et de membres, quant à eux, utilisent la convention de casse Pascal. |
|
CA1710 : Les identificateurs doivent être dotés d'un suffixe correct |
Par convention, les noms des types qui étendent certains types de base ou qui implémentent certaines interfaces, ou encore des types dérivés de ces types, présentent un suffixe associé au type de base ou à l'interface. |
CA1711 : Les identificateurs ne doivent pas porter un suffixe incorrect |
Par convention, seuls les noms des types qui étendent certains types de base ou qui implémentent certaines interfaces, ou les types dérivés de ces types, doivent se terminer par des suffixes réservés spécifiques. Les autres noms de types ne doivent pas utiliser ces suffixes réservés. |
CA1712 : N'ajoutez pas le nom de type en guise de préfixe à des valeurs enum |
Les noms des membres de l'énumération n'ont pas pour préfixe le nom de type car les informations de type sont censées être fournies par les outils de développement. |
CA1713 : Les événements ne doivent pas être munis d'un préfixe Before ou After |
Le nom d'un événement commence par « Before » ou « After ». Pour nommer des événements associés déclenchés dans une séquence spécifique, utilisez le présent ou le passé pour indiquer la position relative dans la séquence d'actions. |
CA1714 : Les énumérations d'indicateurs doivent avoir des noms au pluriel |
Une énumération publique comporte l'attribut System.FlagsAttribute et son nom ne se termine pas par « s ». Les types marqués avec FlagsAttribute ont des noms au pluriel car l'attribut indique que plusieurs valeurs peuvent être spécifiées. |
CA1715 : Les identificateurs doivent être dotés d'un préfixe correct |
Le nom d'une interface extérieurement visible ne commence pas par un « I » majuscule. Le nom d'un paramètre de type générique sur un type ou une méthode extérieurement visible ne commence pas par un « T » majuscule. |
CA1717 : Seuls les noms des enums FlagsAttribute doivent être au pluriel |
Selon les conventions d'attribution de nom, un nom au pluriel pour une énumération indique que plusieurs valeurs de l'énumération peuvent être spécifiées simultanément. |
CA1719 : Les noms des paramètres ne doivent pas être identiques aux noms des membres |
Un nom de paramètre doit véhiculer la signification du paramètre et un nom de membre celle du membre. Un design où ceux-ci sont identiques est rare. Donner à un paramètre le même que son membre n'est pas une méthode intuitive et rend la bibliothèque difficile à utiliser. |
CA1720 : Les identificateurs ne doivent pas contenir de noms de types |
Le nom d'un paramètre dans un membre extérieurement visible contient un nom de type de données, ou le nom d'un membre extérieurement visible contient un nom de type de données spécifique à une langue. |
CA1721 : Les noms des propriétés ne doivent pas être identiques à ceux des méthodes Get |
Le nom d'un membre public ou protégé commence par « Get ». Sinon, il correspond au nom d'une propriété publique ou protégée. Les méthodes et propriétés « Get » doivent avoir des noms qui distinguent clairement leurs fonctions respectives. |
CA1722 : Les identificateurs ne doivent pas porter un préfixe incorrect |
Par convention, seuls certains éléments de programmation présentent des noms qui commencent par un préfixe spécifique. |
CA1724 : les noms de types ne doivent pas être identiques aux espaces de noms |
Les noms de types ne doivent pas correspondre aux noms d'espaces de noms définis dans la bibliothèque de classes .NET Framework. Enfreindre cette règle peut réduire la facilité d'utilisation de la bibliothèque. |
CA1725 : Les noms de paramètres doivent correspondre à la déclaration de base |
La désignation cohérente des paramètres dans une hiérarchie de substitution augmente la facilité d'utilisation des substitutions de méthode. Un nom de paramètre dans une méthode dérivée qui diffère du nom dans la déclaration de base peut créer une confusion pour déterminer si la méthode est une substitution de la méthode de base ou une nouvelle surcharge de la méthode. |
Le nom d'un identificateur visible de l'extérieur contient un terme pour lequel un autre terme par défaut existe. Le nom peut également inclure le terme « Indicateur » ou « Indicateurs ». |
|
CA2204 : Les littéraux doivent être correctement orthographiés |
Une chaîne littéral dans un corps de méthode contient un ou plusieurs mots qui ne sont pas reconnus par la bibliothèque de vérificateur d'orthographe Microsoft. |