Partager via


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

CA1020 : Éviter les espaces de noms comportant peu de types

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.

CA1021 : Éviter les paramètres out

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.

CA1040 : Éviter les interfaces vides

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é.

CA1045 : Ne pas passer de types par référence

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.

CA1062 : Valider les arguments de méthodes publiques

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.

CA1501 : Éviter l'excès d'héritage

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.

CA1504 : Vérifier les noms de champs trompeurs

Le nom d'un champ d'instance commence par « s_ » ou le nom d'un champ statique (partagé dans Visual Basic) commence par « m_ ».

CA1505 : Éviter le code impossible à maintenir

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.

CA1506 : Éviter les couplages de classe excessifs

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.

CA1700 : Ne nommez pas les valeurs enum 'Reserved'

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.

CA1702 : La casse des mots composés doit être correcte

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.

CA1709 : La casse des identificateurs doit être correcte

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.

CA1726 : Utilisez les termes par défaut

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.