Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V souboru .editorconfig můžete definovat konvence vytváření názvů pro prvky kódu programovacího jazyka .NET, jako jsou třídy, vlastnosti a metody, a způsob, jakým by kompilátor nebo integrované vývojové prostředí měly tyto konvence vynucovat. Můžete například určit, že veřejný člen, který není velkými písmeny, by měl být považován za chybu kompilátoru nebo že pokud soukromé pole nezačíná _na , mělo by se vystavit upozornění sestavení.
Konkrétně můžete definovat pravidlo pojmenování, které se skládá ze tří částí:
- Skupina symbolů, na kterou se pravidlo vztahuje, například na veřejné členy nebo soukromá pole.
- Styl pojmenování, který se má přidružit k pravidlu, například že název musí být velkými písmeny nebo musí začínat podtržítkem.
- Úroveň závažnosti zprávy, pokud prvky kódu zahrnuté ve skupině symbolů nedodržují styl pojmenování.
Obecná syntaxe
Pokud chcete definovat některou z výše uvedených entit – pravidlo pojmenování, skupinu symbolů nebo styl pojmenování – nastavte jednu nebo více vlastností pomocí následující syntaxe:
<kind>.<entityName>.<propertyName> = <propertyValue>
Všechna nastavení vlastností pro danou kind entitu a entityName tvoří danou definici entity.
Každá vlastnost by měla být nastavena pouze jednou, ale některá nastavení umožňují více hodnot oddělených čárkami.
Pořadí vlastností není důležité.
<kind> hodnoty
<Druh> určuje, který druh entity se definuje – pravidlo pojmenování, skupina symbolů nebo styl pojmenování – a musí to být jedna z těchto věcí:
| Nastavení vlastnosti pro | Použijte hodnotu <kind> |
Příklad |
|---|---|---|
| Pravidlo pojmenování | dotnet_naming_rule |
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion |
| Skupina symbolů | dotnet_naming_symbols |
dotnet_naming_symbols.interface.applicable_kinds = interface |
| Styl pojmenování | dotnet_naming_style |
dotnet_naming_style.pascal_case.capitalization = pascal_case |
<entityName>
<entityName> je popisný název, který zvolíte, který přidruží nastavení více vlastností k jedné definici. Například následující vlastnosti vytvoří dvě definice skupiny symbolů interface a typeskaždý z nich má dvě vlastnosti nastavené na něm.
dotnet_naming_symbols.interface.applicable_kinds = interface
dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum, delegate
dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected
<propertyName> a <propertyValue>
Každý druh entity – pravidlo pojmenování, skupina symbolů nebo styl pojmenování – má své vlastní podporované vlastnosti, jak je popsáno v následujících částech.
Vlastnosti skupiny symbolů
Pro skupiny symbolů můžete nastavit následující vlastnosti, abyste omezili, které symboly jsou součástí skupiny. Chcete-li zadat více hodnot pro jednu vlastnost, oddělte hodnoty čárkou.
| Vlastnost | Popis | Povolené hodnoty | Požaduje se |
|---|---|---|---|
applicable_kinds |
Druhy symbolů ve skupině 1 |
* (tuto hodnotu použijte k určení všech symbolů)namespaceclassstructinterfaceenumpropertymethodfieldeventdelegateparametertype_parameterlocallocal_function |
Ano |
applicable_accessibilities |
Úrovně přístupnosti symbolů ve skupině |
* (tuto hodnotu použijte k určení všech úrovní přístupnosti.publicinternal nebo friendprivateprotectedprotected_internal nebo protected_friendprivate_protectedlocal (pro symboly definované v rámci metody) |
Ano |
required_modifiers |
Shoda pouze se symboly se všemi zadanými modifikátory 2 |
abstract nebo must_inheritasyncconstreadonlystatic nebo shared3 |
Ne |
Poznámky:
- Členové řazené kolekce členů nejsou v současné době podporováni
applicable_kinds. - Skupina symbolů odpovídá všem modifikátorům
required_modifiersve vlastnosti. Pokud tuto vlastnost vynecháte, nejsou pro shodu vyžadovány žádné konkrétní modifikátory. To znamená, že modifikátory symbolu nemají žádný vliv na to, jestli se toto pravidlo použije nebo ne. - Pokud vaše skupina obsahuje nebo obsahuje vlastnost, bude skupina obsahovat
statictaké symboly, protože jsou implicitněsharedrequired_modifiersconst.static/SharedPokud ale nechcetestatic, aby pravidlo pojmenování platilo proconstsymboly, můžete vytvořit nové pravidlo pojmenování se skupinou symbolůconst. Nové pravidlo bude mít přednost podle pořadí pravidel. -
classobsahuje záznamy jazyka C#.
Vlastnosti stylu pojmenování
Styl pojmenování definuje konvence, které chcete vynutit s pravidlem. Příklad:
- Velká písmena s velkým písmenem
PascalCase - Začíná na
m_ - Končí na
_g - Oddělte slova pomocí
__
Pro styl pojmenování můžete nastavit následující vlastnosti:
| Vlastnost | Popis | Povolené hodnoty | Požaduje se |
|---|---|---|---|
capitalization |
Styl psaní velkých písmen u slov v symbolu | pascal_casecamel_casefirst_word_upperall_upperall_lower |
Ano1 |
required_prefix |
Musí začínat těmito znaky. | Ne | |
required_suffix |
Musí končit těmito znaky. | Ne | |
word_separator |
Slova v symbolu musí být oddělena tímto znakem. | Ne |
Poznámky:
- Styl psaní velkých písmen musíte zadat jako součást stylu pojmenování, jinak se styl pojmenování může ignorovat.
Vlastnosti pravidla pojmenování
Aby se pravidlo projevilo, vyžadují se všechny vlastnosti pravidla pojmenování.
| Vlastnost | Popis |
|---|---|
symbols |
Název skupiny symbolů definované jinde; Pravidlo pojmenování se použije na symboly v této skupině. |
style |
Název stylu pojmenování, který by měl být přidružen k tomuto pravidlu; styl je definován jinde. |
severity |
Nastaví závažnost, se kterou se má vynucovat pravidlo pojmenování. Nastavte přidruženou hodnotu na jednu z dostupných úrovní závažnosti.1 |
Poznámky:
- Specifikace závažnosti v rámci pravidla pojmenování se respektuje pouze v rámci vývojových vývojových prostředí, jako je Například Visual Studio. Toto nastavení nepochopeno kompilátory jazyka C# nebo VB, proto se během sestavování nerespektuje. Pokud chcete vynutit pravidla stylu pojmenování při sestavení, měli byste místo toho nastavit závažnost pomocí konfigurace závažnosti pravidla kódu. Další informace najdete u tohoto problému na GitHubu.
Pořadí pravidel
Pořadí, ve kterém jsou pravidla pojmenování definována v souboru EditorConfig, nezáleží. Pravidla pojmenování se automaticky řadí podle definic samotných pravidel. Konkrétnější pravidla týkající se pravděpodobností přístupu, modifikátorů a symbolů mají přednost před méně specifickými pravidly. Pokud se pravidla překrývají nebo pokud řazení pravidel způsobuje problémy, můžete průnik těchto dvou pravidel rozdělit do nového pravidla, které má přednost před širšími pravidly, ze kterých bylo odvozeno. Příklady viz Příklad: Překrývající se strategie pojmenování a Příklad: const modifikátor zahrnuje static a readonly.
Poznámka:
Pokud používáte verzi sady Visual Studio starší než Visual Studio 2019, měla by se pravidla pojmenování řadit od většiny specifických po nejméně konkrétní v souboru EditorConfig. První pravidlo, které lze použít, je jediné použité pravidlo. Pokud však existuje více vlastností pravidla se stejným názvem, má přednost vlastnost naposledy nalezená s tímto názvem. Další informace najdete v tématu Hierarchie souborů a priorita.
Příklad: Překrývající se strategie pojmenování
Zvažte následující dvě pravidla pojmenování:
- Veřejné metody jsou PascalCase.
- Asynchronní metody končí na
"Async".
U public async metod není zřejmé, které pravidlo má přednost. Můžete vytvořit nové pravidlo pro public async metody a přesně určit pojmenování.
Příklad: const modifikátor zahrnuje static a readonly
Zvažte následující dvě pravidla pojmenování:
- Konstantní pole jsou PascalCase.
- Neveřejná
staticpole jsou s_camelCase.
Pravidlo 2 je konkrétnější a má přednost, takže všechna neveřejná konstantní pole jsou s_camelCase. Pokud chcete tento problém vyřešit, můžete definovat pravidlo průniku: neveřejná konstantní pole jsou PascalCase.
Výchozí styly pojmenování
Pokud nezadáte žádná vlastní pravidla pojmenování, použijí se následující výchozí styly:
Pro třídy, struktury, výčty, vlastnosti, metody a události s libovolnou přístupností je výchozí styl pojmenování pascal případ.
Pro rozhraní s jakoukoli přístupností je výchozím stylem pojmenování pascal případ s požadovanou předponou I.
ID pravidla kódu: IDE1006 (Naming rule violation)
Všechny možnosti pojmenování mají ID IDE1006 pravidla a název Naming rule violation. Závažnost porušení názvů můžete nakonfigurovat globálně v souboru EditorConfig s následující syntaxí:
dotnet_diagnostic.IDE1006.severity = <severity value>
Hodnota závažnosti musí být warning nebo musí být error. Všechny možné hodnoty závažnosti najdete na úrovni závažnosti.
Příklad: Velká písmena veřejného člena
Následující soubor .editorconfig obsahuje konvenci pojmenování, která určuje, že veřejné vlastnosti, metody, pole, události a delegáty, které jsou označeny readonly , musí být velkými písmeny. Tato konvence vytváření názvů určuje více druhů symbolů, na které se má pravidlo použít, a to pomocí čárky k oddělení hodnot.
[*.{cs,vb}]
# Defining the 'public_symbols' symbol group
dotnet_naming_symbols.public_symbols.applicable_kinds = property,method,field,event,delegate
dotnet_naming_symbols.public_symbols.applicable_accessibilities = public
dotnet_naming_symbols.public_symbols.required_modifiers = readonly
# Defining the 'first_word_upper_case_style' naming style
dotnet_naming_style.first_word_upper_case_style.capitalization = first_word_upper
# Defining the 'public_members_must_be_capitalized' naming rule, by setting the
# symbol group to the 'public symbols' symbol group,
dotnet_naming_rule.public_members_must_be_capitalized.symbols = public_symbols
# setting the naming style to the 'first_word_upper_case_style' naming style,
dotnet_naming_rule.public_members_must_be_capitalized.style = first_word_upper_case_style
# and setting the severity.
dotnet_naming_rule.public_members_must_be_capitalized.severity = suggestion
Příklad: Pole privátní instance s podtržítkem
Tento fragment kódu souboru .editorconfig vynucuje, aby pole privátní instance měla začínat _hodnotou ; pokud tato konvence není dodržena, integrované vývojové prostředí (IDE) s ním bude zacházet jako s chybou kompilátoru. Privátní statická pole se ignorují.
Protože můžete definovat pouze skupinu symbolů na základě identifikátorů, static které má (například nebo readonly), a ne identifikátory, které nemá (například pole instance, protože staticneobsahuje), musíte definovat dvě pravidla pojmenování:
- Všechna soukromá pole (
staticnebo ne) by měla mítunderscoredpoužitý styl pojmenování jako kompilátorerror. - U soukromých polí
staticby měl býtunderscoredpoužit styl pojmenování s úrovnínonezávažnosti ; jinými slovy tento případ ignorujte.
[*.{cs,vb}]
# Define the 'private_fields' symbol group:
dotnet_naming_symbols.private_fields.applicable_kinds = field
dotnet_naming_symbols.private_fields.applicable_accessibilities = private
# Define the 'private_static_fields' symbol group
dotnet_naming_symbols.private_static_fields.applicable_kinds = field
dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private
dotnet_naming_symbols.private_static_fields.required_modifiers = static
# Define the 'underscored' naming style
dotnet_naming_style.underscored.capitalization = pascal_case
dotnet_naming_style.underscored.required_prefix = _
# Define the 'private_fields_underscored' naming rule
dotnet_naming_rule.private_fields_underscored.symbols = private_fields
dotnet_naming_rule.private_fields_underscored.style = underscored
dotnet_naming_rule.private_fields_underscored.severity = error
# Define the 'private_static_fields_none' naming rule
dotnet_naming_rule.private_static_fields_none.symbols = private_static_fields
dotnet_naming_rule.private_static_fields_none.style = underscored
dotnet_naming_rule.private_static_fields_none.severity = none
Tento příklad také ukazuje, že definice entit lze znovu použít. Styl underscored pojmenování se používá jak v pravidlech private_fields_underscoredprivate_static_fields_none pojmenování, tak i v pravidlech pojmenování.