CA1715: Identifikátory by měly mít správnou předponu
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1715 |
Název | Identifikátory by měly mít správnou předponu |
Kategorie | Pojmenování |
Oprava způsobující chybu nebo chybu způsobující chybu | Rozbít - když se aktivovalo na rozhraních. Nerozbití – při vyvolání u obecných parametrů typu |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Název rozhraní nezačíná velkým písmenem "I".
nebo
Název parametru obecného typu u typu nebo metody nezačíná velkým písmenem T.
Ve výchozím nastavení toto pravidlo sleduje pouze externě viditelná rozhraní, typy a metody, ale dá se konfigurovat.
Popis pravidla
Podle konvence začínají názvy určitých programovacích prvků s konkrétní předponou.
Názvy rozhraní by měly začínat velkým písmenem "I", za kterým následuje jiné velké písmeno. Toto pravidlo hlásí porušení názvů rozhraní, jako jsou MyInterface a IsolatedInterface.
Názvy parametrů obecného typu by měly začínat velkými písmeny T a volitelně mohou následovat další velká písmena. Toto pravidlo hlásí porušení názvů parametrů obecného typu, jako jsou V a Type.
Konvence vytváření názvů poskytují společný vzhled knihoven, které cílí na modul CLR (Common Language Runtime). To snižuje křivku učení, která je nutná pro nové softwarové knihovny, a zvyšuje důvěru zákazníků, že knihovna byla vyvinuta někým, kdo má zkušenosti s vývojem spravovaného kódu.
Konfigurace kódu pro analýzu
Pomocí následujících možností můžete nakonfigurovat, pro které části základu kódu se má toto pravidlo spouštět.
Tyto možnosti můžete nakonfigurovat jenom pro toto pravidlo, pro všechna pravidla, která platí, nebo pro všechna pravidla v této kategorii (pojmenování), na která platí. Další informace naleznete v tématu Možnosti konfigurace pravidla kvality kódu.
Zahrnutí konkrétních povrchů rozhraní API
Na základě přístupnosti můžete nakonfigurovat, na kterých částech základu kódu se má toto pravidlo spouštět. Pokud chcete například určit, že pravidlo by se mělo spouštět jenom na neveřejné ploše rozhraní API, přidejte do souboru .editorconfig v projektu následující pár klíč-hodnota:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Parametry typu s jedním znakem
Můžete nakonfigurovat, jestli chcete z tohoto pravidla vyloučit parametry typu s jedním znakem nebo ne. Pokud chcete například určit, že toto pravidlo by nemělo analyzovat parametry typu jeden znak, přidejte do souboru .editorconfig v projektu jeden z následujících párů klíč-hodnota:
# 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
Poznámka:
Toto pravidlo se nikdy neaktivuje pro parametr typu s názvem T
, Collection<T>
například .
Jak opravit porušení
Přejmenujte identifikátor tak, aby byl správně předpona.
Kdy potlačit upozornění
Nepotlačujte upozornění na toto pravidlo.
Příklad pojmenování rozhraní
Následující fragment kódu ukazuje nesprávně pojmenované rozhraní:
' Violates this rule
Public Interface Book
ReadOnly Property Title() As String
Sub Read()
End Interface
// Violation.
public interface Book
{
string Title
{
get;
}
void Read();
}
Následující fragment kódu opraví předchozí porušení tím, že předponu rozhraní předponou "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
Příklad pojmenování parametrů typu
Následující fragment kódu ukazuje nesprávně pojmenovaný parametr obecného typu:
' Violates this rule
Public Class Collection(Of Item)
End Class
// Violation.
public class Collection<Item>
{
}
Následující fragment kódu opraví předchozí porušení tím, že předponu parametru obecného typu předponou 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