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

<Varlıkadı>

<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 typesbunları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 Tanım İ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
Evet
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)
Evet
required_modifiers Simgeleri yalnızca belirtilen tüm değiştiricilerle eşleştir 2 abstract veya must_inherit
async
const
readonly
static veya shared3
Hayır

Notlar:

  1. Tanımlama grubu üyeleri şu anda içinde applicable_kindsdesteklenmiyor.
  2. 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.
  3. Grubunuz veya özelliğine sahipsestatic, grup örtük olarak/staticShared olduğundan semboller de ekler.constrequired_modifiersshared Ancak, adlandırma kuralının static simgelere const uygulanmasını istemiyorsanız, sembol grubuyla constyeni bir adlandırma kuralı oluşturabilirsiniz. Yeni kural, kural sırasına göre öncelik kazanır.
  4. classC# kayıtlarını içerir.

Adlandırma stili özellikleri

Adlandırma stili, kuralla zorlamak istediğiniz kuralları tanımlar. Örnek:

  • 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 Tanım İ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:

  1. 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 Tanım
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:

  1. 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.

Dekont

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:

  1. Genel yöntemler PascalCase'tir.
  2. 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 staticreadonly

Aşağıdaki iki adlandırma kuralını göz önünde bulundurun:

  1. Sabit alanlar PascalCase'tir.
  2. 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 violationsahiptir. 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 staticiçin iki adlandırma kuralı tanımlamanız gerekir:

  1. Tüm özel alanlar ( static veya değil) bunlara derleyici errorolarak uygulanmış adlandırma stiline sahip underscored olmalıdır.
  2. ile static özel alanlar, önem düzeyi olan adlandırma stiline sahip underscored olmalıdır; başka bir deyişle, bu durumu yoksayın none.
[*.{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_underscoredprivate_static_fields_none adlandırma kuralları tarafından kullanılır.

Ayrıca bkz.