CA1715: Identifierare bör ha rätt prefix
Property | Värde |
---|---|
Regel-ID | CA1715 |
Title | 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 9 | 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