CA1710: Identifikátory by měly mít správnou příponu
Vlastnost | Hodnota |
---|---|
ID pravidla | CA1710 |
Název | Identifikátory by měly mít správnou příponu |
Kategorie | Pojmenování |
Oprava způsobující chybu nebo chybu způsobující chybu | Narušující |
Povoleno ve výchozím nastavení v .NET 9 | No |
Příčina
Identifikátor nemá správnou příponu.
Ve výchozím nastavení toto pravidlo sleduje jenom externě viditelné identifikátory, ale dá se konfigurovat.
Popis pravidla
Podle konvence mají názvy typů, které rozšiřují určité základní typy nebo implementují určitá rozhraní nebo typy odvozené z těchto typů, příponu přidruženou k základnímu typu nebo rozhraní.
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.
Následující tabulka uvádí základní typy a rozhraní, která mají přidružené přípony.
Základní typ/rozhraní | Přípona |
---|---|
System.Attribute | Attribute |
System.EventArgs | EventArgs |
System.Exception | Exception |
System.Collections.ICollection | Collection |
System.Collections.IDictionary | Dictionary |
System.Collections.IEnumerable | Collection |
System.Collections.Generic.IReadOnlyDictionary<TKey,TValue> | Dictionary |
System.Collections.Queue |
Collection nebo Queue |
System.Collections.Stack |
Collection nebo Stack |
System.Collections.Generic.ICollection<T> | Collection |
System.Collections.Generic.IDictionary<TKey,TValue> | Dictionary |
System.Data.DataSet | DataSet |
System.Data.DataTable |
Collection nebo DataTable |
System.IO.Stream | Stream |
System.Security.IPermission | Permission |
System.Security.Policy.IMembershipCondition | Condition |
Delegát obslužné rutiny události. | EventHandler |
Typy, které implementují ICollection a jsou generalizovaným typem datové struktury, jako je slovník, zásobník nebo fronta, jsou povolené názvy, které poskytují smysluplné informace o zamýšleném použití typu.
Typy, které implementují ICollection a jsou kolekcí konkrétních položek, mají názvy, které končí slovem Collection
. Například kolekce Queue objektů by měla název QueueCollection
. Přípona Collection
označuje, že členové kolekce mohou být výčet pomocí příkazu foreach
(For Each
v jazyce Visual Basic).
Typy, které implementují IDictionary nebo IReadOnlyDictionary<TKey,TValue> mají názvy, které končí slovem Dictionary
i v případě, že typ také implementuje IEnumerable nebo ICollection. Zásady vytváření názvů přípon Collection
a Dictionary
umožňují uživatelům rozlišovat mezi následujícími dvěma vzory výčtu.
Typy s příponou Collection
se řídí tímto vzorem výčtu.
foreach(SomeType x in SomeCollection) { }
Typy s příponou Dictionary
se řídí tímto vzorem výčtu.
foreach(SomeType x in SomeDictionary.Values) { }
Objekt DataSet se skládá z kolekce DataTable objektů, která se skládá z kolekcí System.Data.DataColumn a System.Data.DataRow objektů, mimo jiné. Tyto kolekce implementují ICollection prostřednictvím základní System.Data.InternalDataCollectionBase třídy.
Jak opravit porušení
Typ přejmenujte tak, aby byl příponován správným termínem.
Kdy potlačit upozornění
Je bezpečné potlačit upozornění na použití přípony Collection
, pokud je typ generalizovanou datovou strukturou, která může být rozšířena nebo která bude obsahovat libovolnou sadu různorodých položek. V tomto případě může mít název, který poskytuje smysluplné informace o implementaci, výkonu nebo jiných vlastnostech datové struktury (například BinaryTree). V případech, kdy typ představuje kolekci určitého typu (například StringCollection), nepotlačujte upozornění z tohoto pravidla, protože přípona označuje, že typ lze vytvořit výčet pomocí foreach
příkazu.
U jiných přípon nepotlačujte upozornění z tohoto pravidla. Přípona umožňuje, aby zamýšlené použití bylo zřejmé z názvu typu.
Potlačení upozornění
Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.
#pragma warning disable CA1710
// The code that's violating the rule is on this line.
#pragma warning restore CA1710
Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none
konfiguračním souboru.
[*.{cs,vb}]
dotnet_diagnostic.CA1710.severity = none
Další informace naleznete v tématu Jak potlačit upozornění analýzy 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.
- Zahrnutí konkrétních povrchů rozhraní API
- Vyloučení nepřímých základních typů
- Další požadované přípony
Tyto možnosti můžete nakonfigurovat jenom pro toto pravidlo, pro všechna pravidla, která platí pro, nebo pro všechna pravidla v této kategorii (pojmenování), na která se vztahují. Další informace naleznete v tématu Možnosti konfigurace pravidla kvality kódu.
Zahrnutí konkrétních povrchů rozhraní API
Nastavením možnosti api_surface můžete nakonfigurovat, na kterých částech základu kódu se má toto pravidlo spouštět na základě jejich přístupnosti. 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
Poznámka
Nahraďte XXXX
část CAXXXX
ID příslušného pravidla.
Vyloučení nepřímých základních typů
Můžete nakonfigurovat, jestli chcete vyloučit nepřímé základní typy z pravidla. Ve výchozím nastavení je tato možnost nastavená na hodnotu True, která omezuje analýzu na aktuální základní typ.
dotnet_code_quality.CA1710.exclude_indirect_base_types = false
Další požadované přípony
Můžete zadat další požadované přípony nebo přepsat chování některých pevně zakódovaných přípon přidáním následujícího páru klíč-hodnota do souboru .editorconfig v projektu:
dotnet_code_quality.CA1710.additional_required_suffixes = [type]->[suffix]
Oddělte více hodnot znakem |
. Typy lze zadat v některém z následujících formátů:
- Pouze název typu (zahrnuje všechny typy s názvem bez ohledu na typ nebo obor názvů).
- Plně kvalifikované názvy ve formátu ID dokumentace symbolu s volitelnou
T:
předponou.
Příklady:
Hodnota možnosti | Shrnutí |
---|---|
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class |
Všechny typy, které dědí z myClass, musí mít příponu Class. |
dotnet_code_quality.CA1710.additional_required_suffixes = MyClass->Class|MyNamespace.IPath->Path |
Všechny typy, které dědí z myClass, musí mít příponu Class A všechny typy, které implementují MyNamespace.IPath, musí mít příponu Path. |
dotnet_code_quality.CA1710.additional_required_suffixes = T:System.Data.IDataReader->{} |
Přepíše předdefinované přípony. V tomto případě už nejsou všechny typy, které implementují "IDataReader", nutné k ukončení kolekce. |
Související pravidla
CA1711: Identifikátory by neměly mít nesprávnou příponu