CA1715: Id's moeten het juiste voorvoegsel hebben
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1715 |
Titel | Id's moeten het juiste voorvoegsel hebben |
Categorie | Naamgeving |
Oplossing is brekend of niet-brekend | Fouten veroorzaken - wanneer deze op interfaces wordt geactiveerd. Niet-brekend- wanneer deze wordt gegenereerd voor algemene typeparameters. |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
De naam van een interface begint niet met een hoofdletter 'I'.
– of –
De naam van een algemene typeparameter voor een type of methode begint niet met een hoofdletter 'T'.
Deze regel kijkt standaard alleen naar extern zichtbare interfaces, typen en methoden, maar dit kan worden geconfigureerd.
Beschrijving van regel
Standaard beginnen de namen van bepaalde programmeerelementen met een specifiek voorvoegsel.
Interfacenamen moeten beginnen met een hoofdletter 'I' gevolgd door een andere hoofdletter. Deze regel rapporteert schendingen voor interfacenamen, zoals 'MyInterface' en 'IsolatedInterface'.
Algemene parameternamen van het type moeten beginnen met een hoofdletter 'T' en eventueel worden gevolgd door een andere hoofdletter. Deze regel rapporteert schendingen voor algemene parameternamen zoals 'V' en 'Type'.
Naamconventies bieden een gemeenschappelijk uiterlijk voor bibliotheken die gericht zijn op de algemene taalruntime. Dit vermindert de leercurve die vereist is voor nieuwe softwarebibliotheken en verhoogt het vertrouwen van klanten dat de bibliotheek is ontwikkeld door iemand die expertise heeft in het ontwikkelen van beheerde code.
Code configureren om te analyseren
Gebruik de volgende opties om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
U kunt deze opties configureren voor alleen deze regel, voor alle regels waarop deze van toepassing is, of voor alle regels in deze categorie (naamgeving) waarop deze van toepassing is. Zie de configuratieopties voor de codekwaliteitsregel voor meer informatie.
Specifieke API-oppervlakken opnemen
U kunt instellen op welke onderdelen van uw codebase deze regel moet worden uitgevoerd, op basis van hun toegankelijkheid. Als u bijvoorbeeld wilt opgeven dat de regel alleen moet worden uitgevoerd op het niet-openbare API-oppervlak, voegt u het volgende sleutel-waardepaar toe aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CAXXXX.api_surface = private, internal
Parameters voor één tekentype
U kunt configureren of parameters van één tekentype wel of niet van deze regel moeten worden uitgesloten. Als u bijvoorbeeld wilt opgeven dat deze regel geen parameters van één teken mag analyseren, voegt u een van de volgende sleutel-waardeparen toe aan een .editorconfig-bestand in uw project:
# 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
Notitie
Deze regel wordt nooit geactiveerd voor een typeparameter met de naam T
, bijvoorbeeld Collection<T>
.
Schendingen oplossen
Wijzig de naam van de id zodat deze correct wordt voorafgegaan.
Wanneer waarschuwingen onderdrukken
Een waarschuwing van deze regel niet onderdrukken.
Voorbeeld van interfacenaamgeving
Het volgende codefragment toont een onjuist benoemde interface:
' Violates this rule
Public Interface Book
ReadOnly Property Title() As String
Sub Read()
End Interface
// Violation.
public interface Book
{
string Title
{
get;
}
void Read();
}
Met het volgende codefragment wordt de vorige schending opgelost door de interface vooraf te laten gaan met '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
Voorbeeld van naamgeving van typeparameters
In het volgende codefragment ziet u een onjuist benoemde parameter voor het algemene type:
' Violates this rule
Public Class Collection(Of Item)
End Class
// Violation.
public class Collection<Item>
{
}
Met het volgende codefragment wordt de vorige schending opgelost door de algemene typeparameter vooraf te laten gaan door '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