CA1715: Gli identificatori devono contenere il prefisso corretto

Proprietà valore
ID regola CA1715
Titolo Gli identificatori devono contenere il prefisso corretto
Categoria Denominazione
Correzione che causa un'interruzione o un'interruzione Interruzione: quando viene attivato sulle interfacce.

Non di rilievo: se generato su parametri di tipo generico.
Abilitato per impostazione predefinita in .NET 8 No

Causa

Il nome di un'interfaccia non inizia con un 'I' maiuscolo.

oppure

Il nome di un parametro di tipo generico in un tipo o metodo non inizia con un carattere "T" maiuscolo.

Per impostazione predefinita, questa regola esamina solo interfacce, tipi e metodi visibili esternamente, ma è configurabile.

Descrizione regola

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

I nomi di interfaccia devono iniziare con un 'I' maiuscolo seguito da un'altra lettera maiuscola. Questa regola segnala violazioni per i nomi di interfaccia, ad esempio "MyInterface" e "IsolatedInterface".

I nomi dei parametri di tipo generico devono iniziare con un carattere "T" maiuscolo e, facoltativamente, possono essere seguiti da un'altra lettera maiuscola. Questa regola segnala violazioni per i nomi di parametri di tipo generico, ad esempio 'V' e 'Type'.

Le convenzioni di denominazione forniscono un aspetto comune per le librerie destinate a Common Language Runtime. In questo modo si riduce la curva di apprendimento necessaria per le nuove librerie software e si aumenta la fiducia dei clienti che la libreria è stata sviluppata da un utente esperto nello sviluppo di codice gestito.

Configurare il codice da analizzare

Usare le opzioni seguenti per configurare le parti della codebase in cui eseguire questa regola.

È possibile configurare queste opzioni solo per questa regola, per tutte le regole a cui si applica o per tutte le regole in questa categoria (denominazione) a cui si applica. Per altre informazioni, vedere Opzioni di configurazione delle regole di qualità del codice.

Includere superfici API specifiche

È possibile configurare le parti della codebase in modo da eseguire questa regola in base all'accessibilità. Ad esempio, per specificare che la regola deve essere eseguita solo sulla superficie dell'API non pubblica, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Parametri di tipo carattere singolo

È possibile configurare se escludere o meno parametri di tipo carattere singolo da questa regola. Ad esempio, per specificare che questa regola non deve analizzare i parametri di tipo carattere singolo, aggiungere una delle coppie chiave-valore seguenti a un file con estensione editorconfig nel progetto:

# 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

Nota

Questa regola non viene mai attivata per un parametro di tipo denominato T, ad esempio Collection<T>.

Come correggere le violazioni

Rinominare l'identificatore in modo che sia preceduto correttamente.

Quando eliminare gli avvisi

Non escludere un avviso da questa regola.

Esempio di denominazione dell'interfaccia

Il frammento di codice seguente mostra un'interfaccia denominata in modo non corretto:

' Violates this rule
Public Interface Book

    ReadOnly Property Title() As String

    Sub Read()

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

    void Read();
}

Il frammento di codice seguente corregge la violazione precedente anteponendo l'interfaccia con '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

Esempio di denominazione dei parametri di tipo

Il frammento di codice seguente mostra un parametro di tipo generico denominato in modo non corretto:

' Violates this rule
Public Class Collection(Of Item)

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

Il frammento di codice seguente corregge la violazione precedente anteponendo il parametro di tipo generico con '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