C# tanımlayıcı adlandırma kuralları ve kuralları
Tanımlayıcı, bir türe (sınıf, arabirim, yapı, temsilci veya numaralandırma), üyeye, değişkene veya ad alanına atadığınız addır.
Adlandırma kuralları
Geçerli tanımlayıcılar bu kurallara uymalıdır. C# derleyicisi, şu kurallara uymayan tüm tanımlayıcılar için bir hata oluşturur:
- Tanımlayıcılar bir harf veya alt çizgi (
_
) ile başlamalıdır. - Tanımlayıcılar Unicode harf karakterleri, ondalık basamak karakterleri, Unicode bağlanma karakterleri, Unicode birleştirme karakterleri veya Unicode biçimlendirme karakterleri içerebilir. Unicode kategorileri hakkında daha fazla bilgi için bkz . Unicode Kategori Veritabanı.
Tanımlayıcının ön ekini kullanarak C# anahtar sözcükleriyle @
eşleşen tanımlayıcıları bildirebilirsiniz. @
tanımlayıcı adının bir parçası değildir. Örneğin, @if
adlı if
bir tanımlayıcı bildirir. Bu ayrıntılı tanımlayıcılar öncelikle diğer dillerde bildirilen tanımlayıcılarla birlikte çalışabilirlik içindir.
Geçerli tanımlayıcıların tam tanımı için C# Dil Belirtimi'ndeki Tanımlayıcılar makalesine bakın.
Önemli
C# dil belirtimi yalnızca harf (Lu, Ll, Lt, Lm, Lo veya Nl), basamak (Nd), bağlanma (Bilgisayar), birleştirme (Mn veya Mc) ve biçimlendirme (Cf) kategorilerine izin verir. dışındaki her şey kullanılarak otomatik olarak değiştirilir _
. Bu, belirli Unicode karakterlerini etkileyebilir.
Adlandırma kuralları
Kurallara ek olarak, tanımlayıcı adları için kurallar .NET API'leri genelinde kullanılır. Bu kurallar adlar için tutarlılık sağlar, ancak derleyici bunları zorlamaz. Projelerinizde farklı kuralları kullanabilirsiniz.
Kural gereği, C# programları tür adları, ad alanları ve tüm genel üyeler için kullanır PascalCase
. Ayrıca ekip, dotnet/docs
.NET Çalışma Zamanı ekibinin kodlama stilinden benimsenen aşağıdaki kuralları kullanır:
Arabirim adları büyük
I
ile başlar.Öznitelik türleri sözcüğüyle
Attribute
biter.Sabit listesi türleri, iltihapsızlar için tekil bir isim ve bayraklar için çoğul bir ad kullanır.
Tanımlayıcılar ardışık iki alt çizgi (
_
) karakter içermemelidir. Bu adlar derleyici tarafından oluşturulan tanımlayıcılar için ayrılmıştır.Değişkenler, yöntemler ve sınıflar için anlamlı ve açıklayıcı adlar kullanın.
Kısalık yerine netliği tercih edin.
Sınıf adları ve yöntem adları için PascalCase kullanın.
Yöntem parametreleri ve yerel değişkenler için camelCase kullanın.
Hem alanlar hem de yerel sabitler olmak üzere sabit adlar için PascalCase kullanın.
Özel örnek alanları alt çizgiyle (
_
) başlar ve kalan metin camelCased olur.Statik alanlar ile
s_
başlar. Bu kural, varsayılan Visual Studio davranışı veya Çerçeve tasarım yönergelerinin bir parçası değildir, ancak editorconfig içinde yapılandırılabilir.Yaygın olarak bilinen ve kabul edilen kısaltmalar dışında adlarda kısaltma veya kısaltma kullanmaktan kaçının.
Ters etki alanı adı gösterimini izleyen anlamlı ve açıklayıcı ad alanları kullanın.
Derlemenin birincil amacını temsil eden derleme adlarını seçin.
Basit döngü sayaçları dışında tek harfli adları kullanmaktan kaçının. Ayrıca, C# yapılarının söz dizimini açıklayan söz dizimi örnekleri genellikle C# dil belirtiminde kullanılan kuralla eşleşen aşağıdaki tek harfli adları kullanır. Söz dizimi örnekleri kural için özel durumlardır.
- Yapılar için,
C
sınıflar için kullanınS
. - Yöntemler için kullanın
M
. - Değişkenler için,
p
parametreler için kullanınv
. - Parametreler için
ref
kullanınr
.
- Yapılar için,
İpucu
Kod stili adlandırma kurallarını kullanarak büyük harf kullanımı, önekler, sonekler ve sözcük ayırıcılarıyla ilgili adlandırma kurallarını zorunlu kılabilirsiniz.
Aşağıdaki örneklerde, ve öğeleriyle çalışırken işaretlenen public
öğelerle protected
protected internal
ilgili yönergeler de geçerlidir ve bunların tümü dış arayanlar tarafından görülebilecek şekilde tasarlanmıştır.
Pascal büyük/küçük harf
, interface
, struct
veya delegate
türünü adlandırırken class
pascal casing ("PascalCasing") kullanın.
public class DataService
{
}
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
public struct ValueCoordinate
{
}
public delegate void DelegateType(string message);
bir interface
adını adlandırırken, adın önüne bir I
eklemeye ek olarak pascal büyük/küçük harf kullanın. Bu ön ek, tüketicilere bunun bir interface
olduğunu açıkça gösterir.
public interface IWorkerQueue
{
}
Alanlar, özellikler, olaylar gibi türlerin üyelerini adlandırırken public
pascal büyük/küçük harf kullanımını kullanın. Ayrıca, tüm yöntemler ve yerel işlevler için pascal büyük/küçük harf kullanın.
public class ExampleEvents
{
// A public field, these should be used sparingly
public bool IsValid;
// An init-only property
public IWorkerQueue WorkerQueue { get; init; }
// An event
public event Action EventProcessing;
// Method
public void StartEventProcessing()
{
// Local function
static int CountQueueItems() => WorkerQueue.Count;
// ...
}
}
Konumsal kayıtlar yazarken, parametrelerin genel özellikleri olduğu için pascal büyük/küçük harflerini kullanın.
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
Konumsal kayıtlar hakkında daha fazla bilgi için bkz . Özellik tanımı için konumsal söz dizimi.
Deve olayı
Adlandırırken private
veya internal
alanlara ön ek _
eklerken camel casing ("camelCasing") kullanın. Temsilci türü örnekleri de dahil olmak üzere yerel değişkenleri adlandırırken deve kasası kullanın.
public class DataService
{
private IWorkerQueue _workerQueue;
}
İpucu
Deyim tamamlamayı destekleyen bir IDE'de bu adlandırma kurallarını izleyen C# kodu düzenlenirken, yazma _
işlemi nesne kapsamlı tüm üyeleri gösterir.
veya internal
alanlarıyla static
private
çalışırken ve iş parçacığı statik kullanımı için ön ekini s_
kullanınt_
.
public class DataService
{
private static IWorkerQueue s_workerQueue;
[ThreadStatic]
private static TimeSpan t_timeSpan;
}
Yöntem parametreleri yazarken camel casing kullanın.
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
C# adlandırma kuralları hakkında daha fazla bilgi için .NET Çalışma Zamanı ekibinin kodlama stiline bakın.
Tür parametresi adlandırma yönergeleri
Aşağıdaki yönergeler, genel tür parametrelerindeki tür parametreleri için geçerlidir. Tür parametreleri, genel bir türdeki veya genel bir yöntemdeki bağımsız değişkenlerin yer tutucularıdır. C# programlama kılavuzunda genel tür parametreleri hakkında daha fazla bilgi edinebilirsiniz.
Tek bir harf adı tamamen açıklayıcı değilse ve açıklayıcı bir ad değer eklemediği sürece, genel tür parametrelerini açıklayıcı adlarla adlandırabilirsiniz.
public interface ISessionChannel<TSession> { /*...*/ } public delegate TOutput Converter<TInput, TOutput>(TInput from); public class List<T> { /*...*/ }
Tek harfli tür parametresi olan türler için tür parametresi adı olarak kullanmayı
T
göz önünde bulundurun.public int IComparer<T>() { return 0; } public delegate bool Predicate<T>(T item); public struct Nullable<T> where T : struct { /*...*/ }
Ön ek açıklayıcı tür parametre adlarını "T" ile yapın .
public interface ISessionChannel<TSession> { TSession Session { get; } }
Parametre adında tür parametresine yerleştirilen kısıtlamaları belirtmeyi göz önünde bulundurun . Örneğin, ile kısıtlanmış
ISession
bir parametre olarak adlandırılabilirTSession
.
Kod çözümleme kuralı CA1715 , tür parametrelerinin uygun şekilde adlandırıldığından emin olmak için kullanılabilir.
Ek adlandırma kuralları
Yönergeleri kullanmayı, ad alanı nitelemelerini kullanmayı içermeyen örnekler. Bir ad alanının bir projede varsayılan olarak içeri aktarıldığını biliyorsanız, bu ad alanından adları tam olarak nitelemeniz gerekmez. Nitelenmiş adlar, aşağıdaki örnekte gösterildiği gibi tek bir satır için çok uzunsa nokta (.) sonrasında kesilebilir.
var currentPerformanceCounterCategory = new System.Diagnostics. PerformanceCounterCategory();
Diğer yönergelere uymaları için Visual Studio tasarımcı araçları kullanılarak oluşturulan nesnelerin adlarını değiştirmeniz gerekmez.