Sdílet prostřednictvím


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 8 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