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

TypeName

IdentifiersShouldHaveCorrectPrefix

CheckId

CA1715

Catégorie

Microsoft.Naming

Modification avec rupture

Avec rupture - lorsque déclenchée sur des interfaces.

Sans rupture - lorsque déclenchée sur des paramètres de type générique.

Cause

Le nom d'une interface visible à l'extérieur 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 extérieurement visible ne commence pas par un 'T' majuscule.

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'interfaces doivent commencer par un "I" majuscule suivi d'une autre lettre majuscule. Cette règle rapporte des violations pour les noms d'interfaces tels que 'MyInterface' et 'IsolatedInterface'.

Les noms de paramètre de type générique doivent commencer par un 'T' majuscule, suivi éventuellement d'une autre lettre majuscule. Cette règle rapporte les violations pour les noms de paramètres de type générique, tels que ''V' et 'Type'.

Les conventions d'affectation des noms confèrent un aspect commun aux bibliothèques qui ciblent le Common Language Runtime. Elles réduisent ainsi la durée de l'apprentissage requis par les nouvelles bibliothèques de logiciels et confirment au client que la bibliothèque a été développée par une personne compétente en matière de développement de code managé.

Comment corriger les violations

Renommez l'identificateur de sorte que son préfixe soit correct.

Quand supprimer les avertissements

Ne supprimez aucun avertissement de cette règle.

Exemple

L'exemple suivant présente une interface incorrectement nommée.

Imports System

Namespace Samples

    Public Interface Book      ' Violates this rule

        ReadOnly Property Title() As String

        Sub Read()

    End Interface

End Namespace
using System;

namespace Samples
{
    public interface Book   // Violates this rule
    {
        string Title
        {
            get;
        }

        void Read();        
    }
}
using namespace System;

namespace Samples
{
    public interface class Book     // Violates this rule
    {
        property String^ Title
        {
            String^ get();
        }
        void Read();
    };
}

L'exemple suivant résout la violation précédente en faisant précéder le nom de l'interface par un 'I'.

Imports System

Namespace Samples

    Public Interface IBook  ' Fixes the violation by prefixing the interface with 'I'

        ReadOnly Property Title() As String

        Sub Read()

    End Interface

End Namespace
using System;

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

        void Read();        
    }
}
using namespace System;

namespace Samples
{
    public interface class IBook  // Fixes the violation by prefixing the interface with 'I'
    {
        property String^ Title
        {
            String^ get();
        }
        void Read();
    };
}

L'exemple suivant présente un paramètre de type générique incorrectement nommé.

Imports System

Namespace Samples

    Public Class Collection(Of Item)    ' Violates this rule

    End Class

End Namespace
using System;

namespace Samples
{
    public class Collection<Item>   // Violates this rule
    {

    }
}
using namespace System;

namespace Samples
{
    generic <typename Item>     // Violates this rule
    public ref class Collection
    {

    };
}

L'exemple suivant résout la violation précédente en faisant précéder le paramètre de type générique par un 'T'.

Imports System

Namespace Samples

    Public Class Collection(Of TItem)  ' Fixes the violation by prefixing the generic type parameter with 'T'

    End Class

End Namespace
using System;

namespace Samples
{
    public class Collection<TItem>  // Fixes the violation by prefixing the generic type parameter with 'T'

    {

    }
}
using namespace System;

namespace Samples
{
    generic <typename TItem>  // Fixes the violation by prefixing the generic type parameter with 'T'
    public ref class Collection
    {

    };
}

Règles connexes

CA1722 : Les identificateurs ne doivent pas porter un préfixe incorrect