Aracılığıyla paylaş


C# tanımlayıcı adlandırma kuralları ve yöntemleri

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 çizgiyle 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ıdaki @ ö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, @ififadlı 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 BelirtimiTanımlayıcılar makalesine bakın.

Önemli

C# dil belirtimi yalnızca harf (Lu, Ll, Lt, Lm veya Nl), rakam (Nd), bağlanma (Bilgisayar), birleştirme (Mn veya Mc) ve biçimlendirme (Cf) kategorilerine izin verir. Bunun 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ın uygulanmasını zorunlu kılmaz. Projelerinizde farklı kuralları kullanabilirsiniz.

Kural gereği, C# programları tür adları, ad alanları ve tüm genel üyeler için PascalCase kullanır. Ayrıca, dotnet/docs ekibi .NET Çalışma Zamanı takımının kodlama stilibenimsenen aşağıdaki kuralları kullanır:

  • Arabirim adları büyük Iile başlar.

  • Öznitelik türleri Attributesözcüğüyle biter.

  • Sıralı türler, flagsı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 s_ile başlar. Bu kural varsayılan Visual Studio davranışı veyaFramework tasarım yönergelerinin bir parçası değildir, ancakeditorconfig dosyasında yapılandırılabilir .

  • Yaygın olarak bilinen ve kabul edilen kısaltmalar dışında adlarda kısaltma veya akronim kullanmaktan kaçının.

  • Anlamlı ve açıklayıcı ad alanları kullanın; bunlar, ters alan adı biçimini izlemelidir.

  • 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 S, sınıflar için C kullanın.
    • Yöntemler için M kullanın.
    • Değişkenler için v, parametreler için p kullanın.
    • r parametreleri için ref kullanın.

Bahşiş

kod stili adlandırma kurallarını kullanarak, büyük harf kullanımı, önekler, sonekler ve sözcük ayırıcıları içeren adlandırma kurallarını zorunlu kılabilirsiniz.

Aşağıdaki örneklerde, public olarak işaretlenen öğelerle ilgili yönergeler, protected ve protected internal öğeleriyle çalışırken de geçerlidir ve bunların tümü dış arayanlara görünür olması amaçlanmıştır.

Pascal Case

class, interface, structveya delegate türünü adlandırırken 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 interfaceadlandırırken, adın önüne bir Ieklemenin yanı sıra Pascal Kasası kullanın. Bu ön ek, tüketicilere bunun bir interfaceolduğunu açıkça gösterir.

public interface IWorkerQueue
{
}

Türlerin public üyelerini, alanlar, özellikler, olaylar gibi adlandırırken PascalCase yazım biçimini kullanın. Ayrıca, tüm yöntemler ve yerel işlevler için Pascal biçimi 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;
        // ...
    }
}

Konum temelli kayıtlar yazarken, bunlar kaydın genel özellikleri olduğundan parametreler için pascal büyük/küçük harf stilini 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ı

private veya internal alanlarını adlandırırken "camelCase" kullanın ve bunlara _öneki ekleyin. 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;
}

Bahşiş

İfade tamamlamayı destekleyen bir IDE'de bu adlandırma kurallarını izleyen C# kodu düzenlenirken, _ yazıldığında nesne kapsamındaki tüm üyeler gösterilir.

static veya privateinternal alanlarıyla çalışırken, s_ ön ekini ve iş parçacığı statik kullanımı durumunda t_'ü kullanın.

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 stilibakı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 harfli ad, açıklamaya tam uygunsa ve açıklayıcı bir ad ek değer katmıyorsa, genel tür parametrelerini açıklayıcı adlarla adlandırın.

    public interface ISessionChannel<TSession> { /*...*/ }
    public delegate TOutput Converter<TInput, TOutput>(TInput from);
    public class List<T> { /*...*/ }
    
  • düşünün.

    public int IComparer<T>() => 0;
    public delegate bool Predicate<T>(T item);
    public struct Nullable<T> where T : struct { /*...*/ }
    
  • Açıklayıcı tür parametre adlarını "T" ile önceden ekleyin.

    public interface ISessionChannel<TSession>
    {
        TSession Session { get; }
    }
    
  • bir tür parametresine parametre adına yerleştirilen kısıtlamaları belirten düşünün. Örneğin, ISession kısıtlanmış bir parametre TSessionolarak adlandırılabilir.

Ca1715 kod çözümleme kuralı, tür parametrelerinin uygun şekilde adlandırıldığından emin olmak için kullanılabilir.

Ek adlandırma kuralları

  • yönergelerini kullanarak içermeyen örnekler, ad alanı niteliklerini kullanır. 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.