CA1715 : Les identificateurs doivent être dotés d'un préfixe correct

Propriété Value
Identificateur de la règle CA1715
Titre Les identificateurs doivent être dotés d'un préfixe correct
Catégorie Dénomination
Le correctif est cassant ou non cassant Cassant - en cas de déclenchement sur des interfaces.

Non cassant - en cas de déclenchement sur des paramètres de type générique.
Activé par défaut dans .NET 8 Non

Cause

Le nom d’une interface ne commence pas par un « I » majuscule.

-ou-

Le nom d’un paramètre de type générique sur un type ou une méthode ne commence pas par un « T » majuscule.

Par défaut, cette règle examine uniquement les interfaces, les types et les méthodes visibles de l’extérieur, mais elle est configurable.

Description de la règle

Par convention, les noms de certains éléments de programmation commencent par un préfixe spécifique.

Les noms d’interface doivent commencer par un « I » majuscule suivi d’une autre lettre majuscule. Cette règle signale des violations pour les noms d’interface tels que « MyInterface » et « IsolatedInterface ».

Les noms de paramètres de type générique doivent commencer par un « T » majuscule et éventuellement être suivis d’une autre lettre majuscule. Cette règle signale des violations pour les noms de paramètres de type générique tels que « V » et « Type ».

Les conventions de nommage fournissent une recherche commune pour les bibliothèques qui ciblent le common language runtime. Cette cohérence réduit la courbe d’apprentissage requise pour les nouvelles bibliothèques de logiciels et augmente la confiance des clients en ce qui concerne le développement de la bibliothèque par une personne qui a une expertise dans le développement de code managé.

Configurer le code à analyser

Utilisez l’option suivante pour configurer les parties de votre codebase sur lesquelles exécuter cette règle.

Vous pouvez configurer ces options pour cette règle uniquement, pour toutes les règles auxquelles elles s’appliquent ou pour toutes les règles de cette catégorie (Nommage) auxquelles elles s’appliquent. Pour plus d’informations, consultez Options de configuration des règles de qualité du code.

Inclure des surfaces d’API spécifiques

Vous pouvez configurer les parties de votre codebase sur lesquelles exécuter cette règle, en fonction de leur accessibilité. Par exemple, pour spécifier que la règle doit s’exécuter uniquement sur la surface d’API non publique, ajoutez la paire clé-valeur suivante à un fichier .editorconfig dans votre projet :

dotnet_code_quality.CAXXXX.api_surface = private, internal

Paramètres de type à caractère unique

Vous pouvez configurer l’exclusion ou non des paramètres de type à caractère unique de cette règle. Par exemple, pour spécifier que cette règle ne doit pas analyser les paramètres de type à caractère unique, ajoutez l’une des paires clé-valeur suivantes à un fichier .editorconfig dans votre projet :

# Package version 2.9.0 and later
dotnet_code_quality.CA1715.exclude_single_letter_type_parameters = true

# Package version 2.6.3 and earlier
dotnet_code_quality.CA2007.allow_single_letter_type_parameters = true

Notes

Cette règle ne se déclenche jamais pour un paramètre de type nommé T, par exemple Collection<T>.

Comment corriger les violations

Renommez l’identificateur afin qu’il soit correctement préfixé.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple de nommage d’interface

L’extrait de code suivant montre une interface nommée de manière incorrecte :

' Violates this rule
Public Interface Book

    ReadOnly Property Title() As String

    Sub Read()

End Interface
// Violation.
public interface Book
{
    string Title
    {
        get;
    }

    void Read();
}

L’extrait de code suivant corrige la violation précédente en préfixant l’interface avec « I » :

// Fixes the violation by prefixing the interface with 'I'.
public interface IBook
{
    string Title
    {
        get;
    }

    void Read();
}
' Fixes the violation by prefixing the interface with 'I'
Public Interface IBook

    ReadOnly Property Title() As String

    Sub Read()

End Interface

Exemple de nommage de paramètre de type

L’extrait de code suivant montre un paramètre de type générique nommé incorrectement :

' Violates this rule
Public Class Collection(Of Item)

End Class
// Violation.
public class Collection<Item>
{
}

L’extrait de code suivant corrige la violation précédente en préfixant le paramètre de type générique avec « T » :

// Fixes the violation by prefixing the generic type parameter with 'T'.
public class Collection<TItem>
{
}
' Fixes the violation by prefixing the generic type parameter with 'T'
Public Class Collection(Of TItem)

End Class