Kod stili adlandırma kuralları
.editorconfig dosyanızda sınıflar, özellikler ve yöntemler gibi .NET programlama dili kod öğeleriniz için adlandırma kurallarını ve derleyicinin veya IDE'nin bu kuralları nasıl zorunlu kılacağını tanımlayabilirsiniz. Örneğin, büyük harfe çevirmeyen bir genel üyenin derleyici hatası olarak değerlendirilmesini veya özel bir alan ile başlamaması durumunda bir _
derleme uyarısı verilmesini belirtebilirsiniz.
Özellikle, üç bölümden oluşan bir adlandırma kuralı tanımlayabilirsiniz:
- Kuralın uygulandığı sembol grubu , örneğin genel üyeler veya özel alanlar.
- Kuralla ilişkilendirilecek adlandırma stili; örneğin, adın büyük harfle yazılması veya alt çizgiyle başlaması gerekir.
- Sembol grubuna dahil edilen kod öğeleri adlandırma stiline uymadığında iletinin önem düzeyi.
Genel söz dizimi
Yukarıdaki varlıklardan herhangi birini (adlandırma kuralı, simge grubu veya adlandırma stili) tanımlamak için aşağıdaki söz dizimini kullanarak bir veya daha fazla özellik ayarlayın:
<kind>.<entityName>.<propertyName> = <propertyValue>
Belirli kind
bir öğe için tüm özellik ayarları ve entityName
bu belirli varlık tanımını oluşturur.
Her özellik yalnızca bir kez ayarlanmalıdır, ancak bazı ayarlar birden çok virgülle ayrılmış değere izin verir.
Özelliklerin sırası önemli değildir.
<tür> değerleri
<kind> , tanımlandığı varlık türünü (adlandırma kuralı, simge grubu veya adlandırma stili) belirtir ve aşağıdakilerden biri olmalıdır:
Için bir özellik ayarlamak için: | <Tür> değerini kullanma | Örnek |
---|---|---|
Adlandırma kuralı | dotnet_naming_rule |
dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion |
Sembol grubu | dotnet_naming_symbols |
dotnet_naming_symbols.interface.applicable_kinds = interface |
Adlandırma stili | dotnet_naming_style |
dotnet_naming_style.pascal_case.capitalization = pascal_case |
<entityName>
<entityName> , birden çok özellik ayarlarını tek bir tanım ile ilişkilendiren, seçtiğiniz açıklayıcı bir addır. Örneğin, aşağıdaki özellikler iki sembol grubu tanımı interface
oluşturur ve types
bunların her birinde iki özellik ayarlanmıştır.
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> ve <propertyValue>
Adlandırma kuralı, sembol grubu veya adlandırma stili gibi her varlık türünün, aşağıdaki bölümlerde açıklandığı gibi kendi desteklenen özellikleri vardır.
Sembol grubu özellikleri
Gruba hangi simgelerin dahil olduğunu sınırlamak için sembol grupları için aşağıdaki özellikleri ayarlayabilirsiniz. Tek bir özellik için birden çok değer belirtmek için değerleri virgülle ayırın.
Özellik | Açıklama | İzin verilen değerler | Zorunlu |
---|---|---|---|
applicable_kinds |
1. gruptaki simge türleri | * (tüm simgeleri belirtmek için bu değeri kullanın)namespace class struct interface enum property method field event delegate parameter type_parameter local local_function |
Yes |
applicable_accessibilities |
Gruptaki simgelerin erişilebilirlik düzeyleri | * (tüm erişilebilirlik düzeylerini belirtmek için bu değeri kullanın)public internal veya friend private protected protected_internal veya protected_friend private_protected local (bir yöntem içinde tanımlanan simgeler için) |
Yes |
required_modifiers |
Simgeleri yalnızca belirtilen tüm değiştiricilerle eşleştir 2 | abstract veya must_inherit async const readonly static veya shared 3 |
Hayır |
Notlar:
- Tanımlama grubu üyeleri şu anda içinde
applicable_kinds
desteklenmiyor. - Sembol grubu özelliğindeki tüm değiştiriciler ile
required_modifiers
eşleşir. Bu özelliği atlarsanız, eşleşme için belirli değiştiriciler gerekmez. Bu, simge değiştiricilerinin bu kuralın uygulanıp uygulanmaması üzerinde hiçbir etkisi olmadığı anlamına gelir. - Grubunuz veya özelliğine sahipse
static
, grup örtük olarak/static
Shared
olduğundan semboller de ekler.const
required_modifiers
shared
Ancak, adlandırma kuralınınstatic
simgelereconst
uygulanmasını istemiyorsanız, sembol grubuylaconst
yeni bir adlandırma kuralı oluşturabilirsiniz. Yeni kural, kural sırasına göre öncelik kazanır. class
C# kayıtlarını içerir.
Adlandırma stili özellikleri
Adlandırma stili, kuralla zorlamak istediğiniz kuralları tanımlar. Örneğin:
- Ile büyük harfe çevirme
PascalCase
- Şununla başlar:
m_
- Şununla biter:
_g
- Sözcükleri şu şekilde ayırın:
__
Adlandırma stili için aşağıdaki özellikleri ayarlayabilirsiniz:
Özellik | Açıklama | İzin verilen değerler | Zorunlu |
---|---|---|---|
capitalization |
Simge içindeki sözcükler için büyük harfe çevirme stili | pascal_case camel_case first_word_upper all_upper all_lower |
Evet1 |
required_prefix |
Bu karakterlerle başlamalıdır | Hayır | |
required_suffix |
Bu karakterlerle bitmelidir | Hayır | |
word_separator |
Simge içindeki sözcüklerin bu karakterle ayrılması gerekir | Hayır |
Notlar:
- Adlandırma stilinizin bir parçası olarak büyük harfe çevirme stili belirtmeniz gerekir, aksi takdirde adlandırma stiliniz yoksayılabilir.
Adlandırma kuralı özellikleri
Kuralın geçerli olması için tüm adlandırma kuralı özellikleri gereklidir.
Özellik | Açıklama |
---|---|
symbols |
Başka bir yerde tanımlanan bir sembol grubunun adı; adlandırma kuralı bu gruptaki simgelere uygulanacak |
style |
Bu kuralla ilişkilendirilmesi gereken adlandırma stilinin adı; stil başka bir yerde tanımlanır |
severity |
Adlandırma kuralının uygulandığı önem derecesini ayarlar. İlişkili değeri kullanılabilir önem derecelerinden birine ayarlayın.1 |
Notlar:
- Adlandırma kuralı içindeki önem derecesi belirtimine yalnızca Visual Studio gibi geliştirme IDE'leri içinde uyulur. Bu ayar C# veya VB derleyicileri tarafından anlaşılmadığından derleme sırasında dikkate alınmaz. Derlemede adlandırma stili kurallarını zorunlu kılmak için bunun yerine kod kuralı önem derecesi yapılandırmasını kullanarak önem derecesini ayarlamanız gerekir. Daha fazla bilgi için bu GitHub konusuna bakın.
Kural sırası
Adlandırma kurallarının EditorConfig dosyasında tanımlanma sırası önemli değildir. Adlandırma kuralları, kuralların tanımlarına göre otomatik olarak sıralanır. Erişim özellikleri, değiştiriciler ve simgelerle ilgili daha belirli kurallar, daha az belirli kurallardan önceliklidir. Kurallar arasında çakışma varsa veya kural sıralaması sorunlara neden oluyorsa, iki kuralın kesişimini, türetildiği daha geniş kurallardan öncelikli olan yeni bir kurala bölebilirsiniz. Örnekler için bkz . Örnek: Çakışan adlandırma stratejileri ve Örnek: const
değiştirici içerir static
ve readonly
.
EditorConfig Language Service uzantısı bir EditorConfig dosyasını analiz edebilir ve dosyadaki kural sıralamasının derleyicinin çalışma zamanında kullanacağı yöntemden farklı olduğu durumları raporlayabilir.
Not
Visual Studio'nun Visual Studio 2019'dan önceki bir sürümünü kullanıyorsanız, adlandırma kuralları EditorConfig dosyasında en özelden en az özele sıralanmalıdır. Uygulanabilen ilk kural, uygulanan tek kuraldır. Ancak, aynı ada sahip birden çok kural özelliği varsa, bu ada sahip en son bulunan özellik önceliklidir. Daha fazla bilgi için bkz . Dosya hiyerarşisi ve öncelik.
Örnek: Çakışan adlandırma stratejileri
Aşağıdaki iki adlandırma kuralını göz önünde bulundurun:
- Genel yöntemler PascalCase'tir.
- Zaman uyumsuz yöntemler ile
"Async"
biter.
Yöntemler için public async
hangi kuralın öncelikli olduğu belirgin değildir. Yöntemler için public async
yeni bir kural oluşturabilir ve adlandırmayı tam olarak belirtebilirsiniz.
Örnek: const
değiştirici ve içerir static
readonly
Aşağıdaki iki adlandırma kuralını göz önünde bulundurun:
- Sabit alanlar PascalCase'tir.
- Ortak
static
olmayan alanlar s_camelCase.
Kural 2 daha belirgindir ve öncelik alır, bu nedenle genel olmayan tüm sabit alanlar s_camelCase. Sorunu çözmek için bir kesişim kuralı tanımlayabilirsiniz: genel olmayan sabit alanlar PascalCase'tir.
Varsayılan adlandırma stilleri
Herhangi bir özel adlandırma kuralı belirtmezseniz, aşağıdaki varsayılan stiller kullanılır:
Herhangi bir erişilebilirliğe sahip sınıflar, yapılar, numaralandırmalar, özellikler, yöntemler ve olaylar için varsayılan adlandırma stili Pascal büyük/küçük harftir.
Erişilebilirliği olan arabirimler için varsayılan adlandırma stili, I ön ekinin gerekli olduğu Pascal büyük/küçük harftir.
Kod Kuralı Kimliği: IDE1006 (Naming rule violation)
Tüm adlandırma seçenekleri kural kimliğine IDE1006
ve başlığına Naming rule violation
sahiptir. Adlandırma ihlallerinin önem derecesini bir EditorConfig dosyasında aşağıdaki söz dizimiyle genel olarak yapılandırabilirsiniz:
dotnet_diagnostic.IDE1006.severity = <severity value>
Önem derecesi değeri derlemede zorunlu tutulmalı warning
veya error
olmalıdır. Tüm olası önem derecesi değerleri için bkz . önem düzeyi.
Örnek: Genel üye büyük harf kullanımı
Aşağıdaki .editorconfig dosyası, işaretlenmiş readonly
genel özelliklerin, yöntemlerin, alanların, olayların ve temsilcilerin büyük harfle yazılması gerektiğini belirten bir adlandırma kuralı içerir. Bu adlandırma kuralı, değerleri ayırmak için virgül kullanarak kuralın uygulanacağı birden çok simge türünü belirtir.
[*.{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
Örnek: Alt çizgi içeren özel örnek alanları
Bu .editorconfig dosya parçacığı, özel örnek alanlarının bir _
ile başlamasını zorunlu tutar; bu kurala uyulmazsa, IDE bunu bir derleyici hatası olarak kabul eder. Özel statik alanlar yoksayılır.
Simge grubunu yalnızca sahip olduğu tanımlayıcılara (örneğin, static
veya readonly
) göre tanımlayabileceğinizden, sahip olmadığı tanımlayıcılarla (örneğin, bir örnek alanı olmadığından) tanımlayabildiğiniz static
için iki adlandırma kuralı tanımlamanız gerekir:
- Tüm özel alanlar (
static
veya değil) bunlara derleyicierror
olarak uygulanmış adlandırma stiline sahipunderscored
olmalıdır. - ile
static
özel alanlar, önem düzeyi olan adlandırma stiline sahipunderscored
olmalıdır; başka bir deyişle, bu durumu yoksayınnone
.
[*.{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
Bu örnek, varlık tanımlarının yeniden kullanılabilmesini de gösterir. Adlandırma underscored
stili hem hem de private_fields_underscored
private_static_fields_none
adlandırma kuralları tarafından kullanılır.