CA1710: Id's moeten het juiste achtervoegsel hebben
Eigenschappen | Weergegeven als |
---|---|
Regel-id | CA1710 |
Titel | Id's moeten het juiste achtervoegsel hebben |
Categorie | Naamgeving |
Oplossing is brekend of niet-brekend | Breken |
Standaard ingeschakeld in .NET 9 | Nee |
Oorzaak
Een id heeft niet het juiste achtervoegsel.
Deze regel kijkt standaard alleen naar extern zichtbare id's, maar dit kan worden geconfigureerd.
Beschrijving van regel
Standaard hebben de namen van typen die bepaalde basistypen uitbreiden of bepaalde interfaces implementeren, of typen die zijn afgeleid van deze typen, een achtervoegsel dat is gekoppeld aan het basistype of de basisinterface.
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.
De volgende tabel bevat de basistypen en interfaces die aan achtervoegsels zijn gekoppeld.
Basistype/interface | Achtervoegsel |
---|---|
System.Attribute | Kenmerk |
System.EventArgs | EventArgs |
System.Exception | Uitzondering |
System.Collections.ICollection | Verzameling |
System.Collections.IDictionary | Woordenlijst |
System.Collections.IEnumerable | Verzameling |
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> | Woordenlijst |
System.Collections.Queue | Verzameling of wachtrij |
System.Collections.Stack | Verzameling of stack |
System.Collections.Generic.ICollection<T> | Verzameling |
System.Collections.Generic.IDictionary<TKey,TValue> | Woordenlijst |
System.Data.DataSet | Dataset |
System.Data.DataTable | Verzameling of gegevenstabel |
System.IO.Stream | Stream |
System.Security.IPermission | Machtiging |
System.Security.Policy.IMembershipCondition | Conditie |
Een gemachtigde voor een gebeurtenis-handler. | EventHandler |
Typen die ICollection een gegeneraliseerde gegevensstructuur implementeren en zijn, zoals een woordenlijst, stack of wachtrij, zijn toegestane namen die zinvolle informatie geven over het beoogde gebruik van het type.
Typen die worden geïmplementeerd ICollection en een verzameling specifieke items bevatten namen die eindigen op het woord 'Verzameling'. Een verzameling Queue objecten heeft bijvoorbeeld de naam QueueCollection. Het achtervoegsel Verzameling geeft aan dat de leden van de verzameling kunnen worden geïnventariseerd met behulp van de foreach
instructie (For Each
in Visual Basic).
Typen die namen implementeren IDictionary of IReadOnlyDictionary<TKey,TValue> hebben die eindigen op het woord Woordenlijst, zelfs als het type ook wordt geïmplementeerd IEnumerable of ICollection. Met de naamconventies voor het achtervoegsel 'Verzameling' en 'Woordenlijst' kunnen gebruikers onderscheid maken tussen de volgende twee opsommingspatronen.
Typen met het achtervoegsel 'Verzameling' volgen dit opsommingspatroon.
foreach(SomeType x in SomeCollection) { }
Typen met het achtervoegsel Woordenlijst volgen dit opsommingspatroon.
foreach(SomeType x in SomeDictionary.Values) { }
Een DataSet object bestaat uit een verzameling DataTable objecten, die onder andere bestaat uit verzamelingen en System.Data.DataRow System.Data.DataColumn objecten. Deze verzamelingen implementeren ICollection via de basisklasse System.Data.InternalDataCollectionBase .
Schendingen oplossen
Wijzig de naam van het type zodat het achtervoegsel met de juiste term wordt gebruikt.
Wanneer waarschuwingen onderdrukken
Het is veilig om een waarschuwing te onderdrukken om het achtervoegsel 'Verzameling' te gebruiken als het type een gegeneraliseerde gegevensstructuur is die kan worden uitgebreid of die een willekeurige set verschillende items bevat. In dit geval kan een naam die zinvolle informatie biedt over de implementatie, prestaties of andere kenmerken van de gegevensstructuur zinvol zijn (bijvoorbeeld BinaryTree). In gevallen waarin het type een verzameling van een specifiek type vertegenwoordigt (bijvoorbeeld StringCollection), onderdrukt u geen waarschuwing van deze regel omdat het achtervoegsel aangeeft dat het type kan worden geïnventariseerd met behulp van een foreach
instructie.
Voor andere achtervoegsels onderdrukt u geen waarschuwing van deze regel. Met het achtervoegsel kan het beoogde gebruik worden weergegeven in de naam van het type.
Een waarschuwing onderdrukken
Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.
#pragma warning disable CA1710
// The code that's violating the rule is on this line.
#pragma warning restore CA1710
Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none
ervan in op het configuratiebestand.
[*.{cs,vb}]
dotnet_diagnostic.CA1710.severity = none
Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.
Code configureren om te analyseren
Gebruik de volgende opties om te configureren op welke onderdelen van uw codebase deze regel moet worden uitgevoerd.
- Specifieke API-oppervlakken opnemen
- Indirecte basistypen uitsluiten
- Aanvullende vereiste achtervoegsels
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
Indirecte basistypen uitsluiten
U kunt configureren of indirecte basistypen van de regel moeten worden uitgesloten. Deze optie is standaard ingesteld op true, waardoor de analyse wordt beperkt tot het huidige basistype.
dotnet_code_quality.CA1710.exclude_indirect_base_types = false
Aanvullende vereiste achtervoegsels
U kunt aanvullende vereiste achtervoegsels opgeven of het gedrag van bepaalde in code vastgelegde achtervoegsels overschrijven door het volgende sleutel-waardepaar toe te voegen aan een .editorconfig-bestand in uw project:
dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]
Scheid meerdere waarden met een |
teken. Typen kunnen worden opgegeven in een van de volgende indelingen:
- Alleen de naam van het type (bevat alle typen met de naam, ongeacht het type of de naamruimte).
- Volledig gekwalificeerde namen in de documentatie-id-indeling van het symbool met een optioneel
T:
voorvoegsel.
Voorbeelden:
Optiewaarde | Samenvatting |
---|---|
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class |
Alle typen die overnemen van 'MyClass' zijn vereist om het achtervoegsel 'Klasse' te hebben. |
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path |
Alle typen die overnemen van 'MyClass' zijn vereist om het achtervoegsel 'Class' te hebben EN alle typen die 'MyNamespace.IPath' implementeren, moeten het achtervoegsel 'Pad' hebben. |
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} |
Overschrijft ingebouwde achtervoegsels. In dit geval zijn alle typen die 'IDataReader' implementeren, niet meer vereist om te eindigen op 'Verzameling'. |
Gerelateerde regels
CA1711: Id's mogen geen onjuist achtervoegsel hebben