Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W pliku .editorconfig można zdefiniować konwencje nazewnictwa dla elementów kodu języka programowania .NET, takich jak klasy, właściwości i metody , oraz sposób wymuszania tych konwencji przez kompilator lub środowisko IDE. Można na przykład określić, że publiczny element członkowski, który nie jest kapitalizowany, powinien być traktowany jako błąd kompilatora lub jeśli pole prywatne nie zaczyna się od _, powinno zostać wyświetlone ostrzeżenie kompilacji.
W szczególności można zdefiniować regułę nazewnictwa, która składa się z trzech części:
- Grupa symboli, która ma zastosowanie do na przykład publicznych elementów członkowskich lub pól prywatnych.
- Styl nazewnictwa do skojarzenia z regułą, na przykład, że nazwa musi być wielkich liter lub zaczynać się od podkreślenia.
- Poziom ważności komunikatu, gdy elementy kodu zawarte w grupie symboli nie są zgodne ze stylem nazewnictwa.
Składnia ogólna
Aby zdefiniować dowolną z powyższych jednostek — regułę nazewnictwa, grupę symboli lub styl nazewnictwa — ustaw co najmniej jedną właściwość przy użyciu następującej składni:
<kind>.<entityName>.<propertyName> = <propertyValue>
Wszystkie ustawienia właściwości dla danej kind jednostki i entityName składają się na daną definicję jednostki.
Każda właściwość powinna być ustawiana tylko raz, ale niektóre ustawienia zezwalają na wiele wartości rozdzielanych przecinkami.
Kolejność właściwości nie jest ważna.
<kind> wartości
<kind> określa, jaki rodzaj jednostki jest definiowany — reguła nazewnictwa, grupa symboli lub styl nazewnictwa — i musi być jednym z następujących elementów:
| Aby ustawić właściwość dla | Użyj wartości <kind> |
Przykład |
|---|---|---|
| Reguła nazewnictwa | dotnet_naming_rule |
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion |
| Grupa symboli | dotnet_naming_symbols |
dotnet_naming_symbols.interface.applicable_kinds = interface |
| Styl nazewnictwa | dotnet_naming_style |
dotnet_naming_style.pascal_case.capitalization = pascal_case |
<entityName>
<entityName> to opisowa nazwa, która kojarzy wiele ustawień właściwości z pojedynczą definicją. Na przykład następujące właściwości tworzą dwie definicje grup symboli i interfacetypes, z których każda ma dwie właściwości ustawione.
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> i <propertyValue>
Każdy rodzaj jednostki — reguła nazewnictwa, grupa symboli lub styl nazewnictwa — ma własne obsługiwane właściwości, zgodnie z opisem w poniższych sekcjach.
Właściwości grupy symboli
Możesz ustawić następujące właściwości dla grup symboli, aby ograniczyć, które symbole są zawarte w grupie. Aby określić wiele wartości dla jednej właściwości, należy oddzielić wartości przecinkami.
| Właściwości | opis | Dozwolone wartości | Wymagania |
|---|---|---|---|
applicable_kinds |
Rodzaje symboli w grupie 1 |
* (użyj tej wartości, aby określić wszystkie symbole)namespaceclassstructinterfaceenumpropertymethodfieldeventdelegateparametertype_parameterlocallocal_function |
Tak |
applicable_accessibilities |
Poziomy ułatwień dostępu symboli w grupie |
* (użyj tej wartości, aby określić wszystkie poziomy ułatwień dostępu)publicinternal lub friendprivateprotectedprotected_internal lub protected_friendprivate_protectedlocal (dla symboli zdefiniowanych w metodzie) |
Tak |
required_modifiers |
Dopasowuje tylko symbole ze wszystkimi określonymi modyfikatorami 2 |
abstract lub must_inheritasyncconstreadonlystatic lub shared3 |
Nie. |
Uwagi:
- Członkowie krotki nie są obecnie obsługiwane w systemie
applicable_kinds. - Grupa symboli pasuje do wszystkich modyfikatorów we
required_modifierswłaściwości . Jeśli pominiesz tę właściwość, dla dopasowania nie są wymagane żadne określone modyfikatory. Oznacza to, że modyfikatory symboli nie mają wpływu na to, czy ta reguła jest stosowana. - Jeśli grupa ma
staticwłaściwość lubsharedwrequired_modifiersniej, grupa będzie również zawieraćconstsymbole, ponieważ są niejawniestatic/Shared. Jeśli jednak nie chcesz, aby regułastaticnazewnictwa miała być stosowana doconstsymboli, możesz utworzyć nową regułę nazewnictwa z grupą symboliconst. Nowa reguła będzie mieć pierwszeństwo zgodnie z kolejnością reguł. -
classzawiera rekordy języka C#.
Właściwości stylu nazewnictwa
Styl nazewnictwa definiuje konwencje, które mają być wymuszane za pomocą reguły. Na przykład:
- Wielką literą za pomocą polecenia
PascalCase - Rozpoczyna się od
m_ - Kończy się na
_g - Oddzielanie wyrazów z
__
Dla stylu nazewnictwa można ustawić następujące właściwości:
| Właściwości | opis | Dozwolone wartości | Wymagania |
|---|---|---|---|
capitalization |
Styl wielkich liter dla wyrazów w symbolu | pascal_casecamel_casefirst_word_upperall_upperall_lower |
Tak1 |
required_prefix |
Musi zaczynać się od tych znaków | Nie. | |
required_suffix |
Musi kończyć się tymi znakami | Nie. | |
word_separator |
Wyrazy w symbolu muszą być oddzielone tym znakiem | Nie. |
Uwagi:
- Musisz określić styl wielkich liter w ramach stylu nazewnictwa. W przeciwnym razie styl nazewnictwa może być ignorowany.
Właściwości reguły nazewnictwa
Wszystkie właściwości reguły nazewnictwa są wymagane, aby reguła weszła w życie.
| Właściwości | opis |
|---|---|
symbols |
Nazwa grupy symboli zdefiniowanej gdzie indziej; reguła nazewnictwa zostanie zastosowana do symboli w tej grupie |
style |
Nazwa stylu nazewnictwa, który powinien być skojarzony z tą regułą; styl jest definiowany gdzie indziej |
severity |
Ustawia ważność, za pomocą której ma być wymuszana reguła nazewnictwa. Ustaw skojarzona wartość na jeden z dostępnych poziomów ważności.1 |
Uwagi:
- Specyfikacja ważności w regule nazewnictwa jest uwzględniana tylko wewnątrz środowisk IDE programowania, takich jak Visual Studio. To ustawienie nie jest zrozumiałe dla kompilatorów języka C# ani VB, dlatego nie jest uwzględniane podczas kompilacji. Aby wymusić reguły stylu nazewnictwa w kompilacji, należy zamiast tego ustawić ważność przy użyciu konfiguracji ważności reguły kodu. Aby uzyskać więcej informacji, zobacz ten problem w serwisie GitHub.
Kolejność reguł
Kolejność, w jakiej reguły nazewnictwa są zdefiniowane w pliku EditorConfig, nie ma znaczenia. Reguły nazewnictwa są automatycznie uporządkowane zgodnie z definicjami reguł. Bardziej szczegółowe reguły dotyczące dostępu, modyfikatorów i symboli mają pierwszeństwo przed mniej specyficznymi regułami. Jeśli reguły nakładają się na siebie lub jeśli kolejność reguł powoduje problemy, można podzielić skrzyżowanie tych dwóch reguł na nową regułę, która ma pierwszeństwo przed szerszymi regułami, z których została utworzona. Aby zapoznać się z przykładami, zobacz Przykład: Nakładające się strategie nazewnictwa i Przykład: const modyfikator zawiera static i readonly.
Uwaga
Jeśli używasz wersji programu Visual Studio starszej niż Visual Studio 2019, reguły nazewnictwa powinny być uporządkowane od najbardziej specyficznych dla najmniej specyficznych dla pliku EditorConfig. Pierwsza napotkana reguła, którą można zastosować, to jedyna zastosowana reguła. Jeśli jednak istnieje wiele właściwości reguły o tej samej nazwie, ostatnio znaleziona właściwość o tej nazwie ma pierwszeństwo. Aby uzyskać więcej informacji, zobacz Hierarchia plików i pierwszeństwo.
Przykład: Nakładające się strategie nazewnictwa
Rozważ następujące dwie reguły nazewnictwa:
- Metody publiczne to PascalCase.
- Metody asynchroniczne kończą się ciągiem
"Async".
W przypadku public async metod nie jest oczywiste, która reguła ma pierwszeństwo. Możesz utworzyć nową regułę dla public async metod i określić dokładnie nazewnictwo.
Przykład: const modyfikator zawiera static i readonly
Rozważ następujące dwie reguły nazewnictwa:
- Pola stałe to PascalCase.
- Pola inne niż publiczne
staticsą s_camelCase.
Reguła 2 jest bardziej szczegółowa i ma pierwszeństwo, więc wszystkie pola niepubliczne są s_camelCase. Aby rozwiązać ten problem, możesz zdefiniować regułę przecięcia: pola niepubliczne stałe to PascalCase.
Domyślne style nazewnictwa
Jeśli nie określisz żadnych niestandardowych reguł nazewnictwa, zostaną użyte następujące style domyślne:
W przypadku klas, struktur, wyliczenia, właściwości, metod i zdarzeń z dowolnymi ułatwieniami dostępu domyślnym stylem nazewnictwa jest przypadek Pascal.
W przypadku interfejsów z dowolnymi ułatwieniami dostępu domyślnym stylem nazewnictwa jest przypadek Pascal z wymaganym prefiksem I.
Identyfikator reguły kodu: IDE1006 (Naming rule violation)
Wszystkie opcje nazewnictwa mają identyfikator IDE1006 reguły i tytuł Naming rule violation. Ważność naruszeń nazewnictwa można skonfigurować globalnie w pliku EditorConfig o następującej składni:
dotnet_diagnostic.IDE1006.severity = <severity value>
Wartość ważności musi być warning wymuszana na kompilacji lub error musi być wymuszana. Aby uzyskać wszystkie możliwe wartości ważności, zobacz poziom ważności.
Przykład: kapitalizowanie publicznych składowych
Poniższy plik .editorconfig zawiera konwencję nazewnictwa określającą, że właściwości publiczne, metody, pola, zdarzenia i delegaty, które są oznaczone readonly , muszą być wielkich liter. Ta konwencja nazewnictwa określa wiele rodzajów symboli, aby zastosować regułę, używając przecinka w celu oddzielenia wartości.
[*.{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
Przykład: pola wystąpienia prywatnego z podkreśleniami
Ten fragment pliku .editorconfig wymusza, że pola wystąpienia prywatnego powinny zaczynać się od elementu _. Jeśli ta konwencja nie jest zgodna, środowisko IDE będzie traktować je jako błąd kompilatora. Prywatne pola statyczne są ignorowane.
Ponieważ można zdefiniować grupę symboli tylko na podstawie identyfikatorów, które ma (na przykład static lub readonly), a nie według identyfikatorów, których nie ma (na przykład pola wystąpienia, ponieważ nie ma static), należy zdefiniować dwie reguły nazewnictwa:
- Wszystkie pola prywatne —
staticlub nie — powinny miećunderscoredzastosowany styl nazewnictwa jako kompilatorerror. - Pola prywatne z
staticpowinny miećunderscoredzastosowany styl nazewnictwa z poziomemnoneważności ; innymi słowy, ignoruj ten przypadek.
[*.{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
W tym przykładzie pokazano również, że definicje jednostek można użyć ponownie. Styl underscored nazewnictwa jest używany zarówno private_fields_underscored przez reguły nazewnictwa, jak i private_static_fields_none .