Condividi tramite


CA1715: Gli identificatori devono contenere il prefisso corretto

TypeName

IdentifiersShouldHaveCorrectPrefix

CheckId

CA1715

Category

Microsoft.Naming

Breaking Change

Sostanziale - Quando generato su interfacce

Non sostanziale – Se generato su parametri di tipo generici.

Causa

Il nome di un'interfaccia visibile esternamente non inizia con una "I" maiuscola.

In alternativa

Il nome di un parametro di tipo generico su un tipo o metodo visibile esternamente non inizia con una "T" maiuscola.

Descrizione della regola

Per convenzione i nomi di determinati elementi di programmazione iniziano con un prefisso specifico.

I nomi di interfaccia devono iniziare con la I maiuscola seguita da un'altra lettera maiuscola.Questa regola riporta violazioni per i nomi di interfaccia quali "MyInterface" e "IsolatedInterface".

I nomi di parametri di tipo generico devono iniziare con una "T" maiuscola facoltativamente seguita da un'altra lettera maiuscola.Questa regola segnala violazioni per i nomi di parametri di tipo generici quali "V" e "Type".

Le convenzioni di denominazione forniscono un aspetto comune alle librerie che si avvalgono di Common Language Runtime.In questo modo si riduce la curva di apprendimento necessaria per le nuove librerie software e i clienti possono confidare nel fatto che la libreria è stata sviluppata da un esperto nello sviluppo di codice gestito.

Come correggere le violazioni

Rinominare l'identificatore in modo che presenti il prefisso corretto.

Esclusione di avvisi

Non escludere un avviso da questa regola.

Esempio

Nell'esempio riportato di seguito viene illustrata un'interfaccia denominata in modo errato.

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();
    };
}

Nell'esempio riportato di seguito viene risolta la violazione precedente mediante l'aggiunta del prefisso 'I' al nome dell'interfaccia.

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();
    };
}

Nell'esempio riportato di seguito viene illustrato un parametro di tipo generico denominato in modo errato.

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
    {

    };
}

Nell'esempio riportato di seguito viene risolta la violazione precedente aggiungendo il prefisso 'T' al nome del parametro di tipo generico.

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
    {

    };
}

Regole correlate

CA1722: Gli identificatori non devono contenere il prefisso non corretto