Udostępnij za pośrednictwem


CA1715: Identyfikatory powinny mieć poprawny prefiks

Właściwości Wartość
Identyfikator reguły CA1715
Stanowisko Identyfikatory powinny mieć poprawny prefiks
Kategoria Nazewnictwo
Poprawka powodująca niezgodność lub niezgodność Niezgodność — w przypadku wyzwolenia interfejsów.

Bez przerywania — w przypadku podniesienia parametrów typu ogólnego.
Domyślnie włączone na platformie .NET 8 Nie.

Przyczyna

Nazwa interfejsu nie zaczyna się od wielkiej litery "I".

— lub —

Nazwa parametru typu ogólnego w typie lub metodzie nie zaczyna się od wielkiej litery "T".

Domyślnie ta reguła analizuje tylko zewnętrznie widoczne interfejsy, typy i metody, ale jest to możliwe do skonfigurowania.

Opis reguły

Zgodnie z konwencją nazwy niektórych elementów programowania zaczynają się od określonego prefiksu.

Nazwy interfejsów powinny zaczynać się od wielkiej litery "I", a następnie innej wielkiej litery. Ta reguła zgłasza naruszenia nazw interfejsów, takich jak "MyInterface" i "IsolatedInterface".

Nazwy parametrów typu ogólnego powinny zaczynać się od wielkiej litery "T" i opcjonalnie może być po innej wielkiej litery. Ta reguła zgłasza naruszenia ogólnych nazw parametrów typu, takich jak "V" i "Type".

Konwencje nazewnictwa zapewniają wspólny wygląd bibliotek przeznaczonych dla środowiska uruchomieniowego języka wspólnego. Zmniejsza to krzywą uczenia wymaganą dla nowych bibliotek oprogramowania i zwiększa pewność klienta, że biblioteka została opracowana przez kogoś, kto ma doświadczenie w tworzeniu kodu zarządzanego.

Konfigurowanie kodu do analizowania

Użyj poniższych opcji, aby skonfigurować, które części bazy kodu mają być uruchamiane w tej regule.

Możesz skonfigurować te opcje tylko dla tej reguły, dla wszystkich reguł, do których ma ona zastosowanie, lub dla wszystkich reguł w tej kategorii (nazewnictwo), których dotyczy. Aby uzyskać więcej informacji, zobacz Opcje konfiguracji reguły jakości kodu.

Uwzględnij określone powierzchnie interfejsu API

Możesz skonfigurować, na których częściach bazy kodu ma być uruchamiana ta reguła, na podstawie ich ułatwień dostępu. Aby na przykład określić, że reguła powinna być uruchamiana tylko na powierzchni niepublicznego interfejsu API, dodaj następującą parę klucz-wartość do pliku editorconfig w projekcie:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Parametry typu jednoznakowego

Można skonfigurować, czy z tej reguły mają być wykluczane parametry typu jednoznakowego. Aby na przykład określić, że ta reguła nie powinna analizować parametrów typu jednoznakowego, dodaj jedną z następujących par klucz-wartość do pliku editorconfig w projekcie:

# 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

Uwaga

Ta reguła nigdy nie jest uruchamiana dla parametru typu o nazwie T, na przykład Collection<T>.

Jak naprawić naruszenia

Zmień nazwę identyfikatora, aby był poprawnie poprzedzony.

Kiedy pomijać ostrzeżenia

Nie pomijaj ostrzeżeń dla tej reguły.

Przykład nazewnictwa interfejsu

Poniższy fragment kodu przedstawia niepoprawnie nazwany interfejs:

' Violates this rule
Public Interface Book

    ReadOnly Property Title() As String

    Sub Read()

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

    void Read();
}

Poniższy fragment kodu naprawia poprzednie naruszenie przez prefiks interfejsu z elementem "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

Przykład nazewnictwa parametrów typu

Poniższy fragment kodu przedstawia niepoprawnie nazwany parametr typu ogólnego:

' Violates this rule
Public Class Collection(Of Item)

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

Poniższy fragment kodu naprawia poprzednie naruszenie, prefiksując parametr typu ogólnego o wartości "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