Share via


CA1715: Identifierare bör ha rätt prefix

Property Värde
Regel-ID CA1715
Rubrik Identifierare bör ha rätt prefix
Kategori Namngivning
Korrigeringen är icke-bakåtkompatibel Breaking – när den utlöses på gränssnitt.

Icke-icke-bryta - när den höjs på generiska typparametrar.
Aktiverad som standard i .NET 8 Nej

Orsak

Namnet på ett gränssnitt börjar inte med versaler som "I".

- eller -

Namnet på en allmän typparameter för en typ eller metod börjar inte med versaler som "T".

Som standard tittar den här regeln bara på externt synliga gränssnitt, typer och metoder, men detta kan konfigureras.

Regelbeskrivning

Enligt konventionen börjar namnen på vissa programmeringselement med ett specifikt prefix.

Gränssnittsnamn bör börja med ett versalt "I" följt av en annan versal. Den här regeln rapporterar överträdelser för gränssnittsnamn som "MyInterface" och "IsolatedInterface".

Generiska typparameternamn bör börja med versaler "T" och kan eventuellt följas av en annan versaler. Den här regeln rapporterar överträdelser för generiska typparameternamn som "V" och "Type".

Namngivningskonventioner ger ett vanligt utseende för bibliotek som riktar sig till den gemensamma språkkörningen. Detta minskar inlärningskurvan som krävs för nya programvarubibliotek och ökar kundernas förtroende för att biblioteket har utvecklats av någon som har kunskaper om att utveckla hanterad kod.

Konfigurera kod för analys

Använd följande alternativ för att konfigurera vilka delar av kodbasen som regeln ska köras på.

Du kan konfigurera dessa alternativ för just den här regeln, för alla regler som den gäller för eller för alla regler i den här kategorin (namngivning) som den gäller för. Mer information finns i Konfigurationsalternativ för kodkvalitetsregel.

Inkludera specifika API-ytor

Du kan konfigurera vilka delar av kodbasen som ska köras med den här regeln baserat på deras tillgänglighet. Om du till exempel vill ange att regeln endast ska köras mot den icke-offentliga API-ytan lägger du till följande nyckel/värde-par i en .editorconfig-fil i projektet:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Parametrar för en teckentyp

Du kan konfigurera om parametrar av typen en tecken ska undantas eller inte från den här regeln. Om du till exempel vill ange att den här regeln inte ska analysera parametrar med en teckentyp lägger du till något av följande nyckel/värde-par i en .editorconfig-fil i projektet:

# 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

Kommentar

Den här regeln utlöses aldrig för en typparameter med namnet T, till exempel Collection<T>.

Så här åtgärdar du överträdelser

Byt namn på identifieraren så att den är korrekt prefix.

När du ska ignorera varningar

Ignorera inte en varning från den här regeln.

Exempel på gränssnittsnamngivning

Följande kodfragment visar ett felaktigt namngivet gränssnitt:

' Violates this rule
Public Interface Book

    ReadOnly Property Title() As String

    Sub Read()

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

    void Read();
}

Följande kodfragment åtgärdar den tidigare överträdelsen genom att prefixa gränssnittet med "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

Exempel på namngivning av parameter

Följande kodfragment visar en felaktigt namngiven generisk typparameter:

' Violates this rule
Public Class Collection(Of Item)

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

Följande kodfragment åtgärdar den tidigare överträdelsen genom att prefixa den generiska typparametern med "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