CA1715: Identyfikatory powinny mieć poprawny prefiks
Właściwości | Wartość |
---|---|
Identyfikator reguły | CA1715 |
Tytuł | 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 9 | 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