Kodlama kuralları aşağıdaki amaçlara hizmet eder:
- Bunlar, koda tutarlı bir görünüm oluşturur, böylece okuyucular düzene göre değil, içeriğe odaklanabilir.
- Bu kullanıcılar, önceki deneyimle dayalı varsayımlar yaparak okuyucuların kodu daha hızlı anlamasına imkan sağlar.
- Kodu kopyalama, değiştirme ve sürdürme işlemlerini kolaylaştırır.
- C# En Iyi yöntemlerini gösterir.
Önemli
Bu makaledeki yönergeler,
Microsoft tarafından örnek ve belge geliştirmek için kullanılır.
.NET çalışma zamanı,
C# kodlama stili yönergelerinden benimsemiş olmaları gerekir. Bunları kullanabilir veya gereksinimlerinize uyarlayabilirsiniz. Birincil hedefler projenizin, takımınızın, kuruluşunuzun veya Şirket kaynak kodunuzun içinde tutarlılık ve okunabilirlik.
Adlandırma kuralları
C# kodu yazarken dikkate alınması gereken birkaç adlandırma kuralı vardır.
Pascal durumu
Veya adlandırırken Pascal büyük/küçük harf ("
Pascalbüyük harf") kullanın
class record struct .
PHP- Kodu
public class DataService
{
}
PHP- Kodu
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
PHP- Kodu
public struct ValueCoordinate
{
}
Adlandırma sırasında
interface , adı ile önek olarak eklemek için ek olarak, Pascal büyük/küçük harf kullanın
I . Bu, tüketicilerinin bir olduğunu açıkça gösterir
interface .
PHP- Kodu
public interface IWorkerQueue
{
}
public Alanlar, özellikler, olaylar, Yöntemler ve yerel işlevler gibi türlerin üyelerini adlandırırken, Pascal büyük küçük harf özelliğini kullanın.
PHP- Kodu
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, kaydın ortak özellikleri olduklarından parametreler için Pascal büyük küçük harf kullanın.
PHP- Kodu
public record PhysicalAddress(
string Street,
string City,
string StateOrProvince,
string ZipCode);
Konumsal kayıtlar hakkında daha fazla bilgi için bkz.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Kamel büyük/küçük harf
Adlandırma veya alanlar için
camel casing ("
camelCasing") kullanın ve ön
private internal eklerini ile birlikte
_ kullanın.
PHP- Kodu
public class DataService
{
private IWorkerQueue _workerQueue;
}
İpucu
Deyimin tamamlanmasını destekleyen bir
IDE'de bu adlandırma kurallarına uygun
C# kodunu düzenlerken, yazma işlemi nesne kapsamlı
_ üyelerin hepsini gösterir.
veya olan static alanlarla çalışırken
private ön eki kullanın ve iş parçacığı statik için internal
s_ t_ kullanın.
PHP- Kodu
public class DataService
{
private static IWorkerQueue s_workerQueue;
[ThreadStatic]
private static TimeSpan t_timeSpan;
}
Yöntem parametreleri yazarken,
büyük/yenilerini kullanın.
PHP- Kodu
public T SomeMethod<T>(int someNumber, bool isValid)
{
}
C# adlandırma kuralları hakkında daha fazla bilgi için bkz.
[Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
Ek adlandırma kuralları
- kullanma yönergelerini kullanmayan örnekler,ad alanı niteliklerini kullanır. Bir ad alanının bir projede varsayılan olarak içe aktarılmış olduğunu biliyorsanız, bu ad alanının adlarını tam olarak nitelendirebilirsiniz. Aşağıdaki örnekte gösterildiği gibi, tek bir satır için çok uzunsa, tam adlar nokta (.) sonrasında bozuk olabilir.
PHP- Kodu
var currentPerformanceCounterCategory = new System.Diagnostics.
PerformanceCounterCategory();
- Diğer yönergelere uygun hale Visual Studio nesnelerinin adlarını değiştirmek zorunda değildir.
Düzen kuralları
- Varsayılan Kod Düzenleyicisi ayarlarını (akıllı girintileme, dört karakterli girintiler, boşluk olarak kaydedilen sekmeler) kullanın. Daha fazla bilgi için bkz. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...]
- Satır başına yalnızca bir deyim yazın.
- Satır başına yalnızca bir bildirim yazın.
- Devamlılık satırları otomatik olarak girintilenmezse, bunları bir sekme durdurma (dört boşluk) girintileme.
- Yöntem tanımları ve özellik tanımları arasına en az bir boş satır ekleyin.
- Aşağıdaki kodda gösterildiği gibi, bir ifadedeki yan tümceleri görünür hale yapmak için parantez kullanın.
PHP- Kodu
if ((val1 > val2) && (val1 > val3))
{
// Take appropriate action.
}
Yorum oluşturma kuralları
- Yorumu bir kod satırının sonuna değil, ayrı bir satıra yerleştirin.
- Açıklama metnini büyük harfle Başlat.
- Açıklama metnini noktayla bitirin.
- Aşağıdaki örnekte gösterildiği gibi açıklama sınırlayıcısı (//) ve açıklama metni arasına bir boşluk ekleyin.
PHP- Kodu
// The following declaration creates a query. It does not run
// the query.
- Yorumlar etrafında yıldız işareti blokları oluşturmayın.
Dil yönergeleri
Aşağıdaki bölümlerde, C# ekibinin kod örneklerini ve örnekleri hazırlamak için izlediği uygulamalar açıklanır.
Dize veri türü
- Aşağıdaki kodda gösterildiği gibi, kısa dizeleri birleştirmek için dize ilişkilendirmeyi kullanın.
PHP- Kodu
string displayName = $"{nameList[n].LastName}, {nameList[n].FirstName}";
- Döngülerde dizeleri eklemek için, özellikle büyük miktarlarda metinle çalışırken bir StringBuilder nesnesi kullanın.
PHP- Kodu
var phrase = "lalalalalalalalalalalalalalalalalalalalalalalalalalalalalala";
var manyPhrases = new StringBuilder();
for (var i = 0; i < 10000; i++)
{
manyPhrases.Append(phrase);
}
//Console.WriteLine("tra" + manyPhrases);
Örtülü olarak belirtilmiş yerel değişkenler
- Değişkenin türü atamanın sağ tarafından açık olduğunda veya kesin tür önemli olmadığında yerel değişkenler için örtülü yazma kullanın.
PHP- Kodu
var var1 = "This is clearly a string.";
var var2 = 27;
- Tür atamanın sağ tarafından görünmüyorsa, yok kullanmayın. Türün bir yöntem adından temiz olduğunu varsaymayın. Bir değişken türü, bir new işleç veya açık bir tür ise Clear olarak değerlendirilir.
PHP- Kodu
int var3 = Convert.ToInt32(Console.ReadLine());
int var4 = ExampleClass.ResultSoFar();
- Değişkenin türünü belirtmek için değişken adına güvenmeyin. Doğru olmayabilir. Aşağıdaki örnekte, değişken adı inputInt yanıltıcıdır. Bu bir dizedir.
PHP- Kodu
var inputInt = Console.ReadLine();
Console.WriteLine(inputInt);
- Dinamik yerine kullanılmasını önleyin var . Çalışma dynamic zamanı türü çıkarımı istediğiniz zaman kullanın. Daha fazla bilgi için bkz. [Üye Olmadan Linkleri Göremezsiniz. Üye Olmak için TIKLAYIN...].
- Döngülerde döngü değişkeninin türünü belirlemek için örtülü yazma for kullanın.
Aşağıdaki örnek, bir deyiminde örtülü yazma for kullanır.
PHP- Kodu
var phrase = "lalalalalalalalalalalalalalalalalalalalalalalalalalalalalala";
var manyPhrases = new StringBuilder();
for (var i = 0; i < 10000; i++)
{
manyPhrases.Append(phrase);
}
//Console.WriteLine("tra" + manyPhrases);
- Döngülerde döngü değişkeninin türünü belirlemek için örtülü yazma foreach kullanmayın.
Aşağıdaki örnek, bir deyiminde açık yazma foreach kullanır.
PHP- Kodu
foreach (char ch in laugh)
{
if (ch == 'h')
Console.Write("H");
else
Console.Write(ch);
}
Console.WriteLine();
Not
Tekrarlanabilir koleksiyonun bir öğesi türünü yanlışlıkla değiştirmeden dikkatli olun. Örneğin, sorgunun yürütülmesini
System.Linq.IQueryable değiştiren deyiminde
'den 'ye System.Collections.IEnumerable foreach geçmek kolaydır.
Imzasız veri türleri
Genel olarak, int imzalanmamış türler yerine kullanın. kullanımı
int C# boyunca yaygındır ve kullanıyorken diğer kitaplıklarla etkileşim kurmak daha
int kolaydır.
Diziler
Bildirim satırda dizileri başlatılırken kısa söz dizimlerini kullanın. Aşağıdaki örnekte yerine kullanabileceğiniz bir not
var yer alaz.
string[]
PHP- Kodu
string[] vowels1 = { "a", "e", "i", "o", "u" };
Açık örnekleme kullanıyorsanız
var kullanabilirsiniz.
PHP- Kodu
var vowels2 = new string[] { "a", "e", "i", "o", "u" };
Bir dizi boyutu belirtirsiniz, öğeleri tek tek başlatmalı.
PHP- Kodu
var vowels3 = new string[5];
vowels3[0] = "a";
vowels3[1] = "e";
// And so on.
Temsilciler
Temsilci
Func<> türlerini Action<> tanımlamak yerine ve kullanın. Bir sınıfta, temsilci yöntemini tanımlayın.
PHP- Kodu
public static Action<string> ActionExample1 = x => Console.WriteLine($"x is: {x}");
public static Action<string, string> ActionExample2 = (x, y) =>
Console.WriteLine($"x is: {x}, y is {y}");
public static Func<string, int> FuncExample1 = x => Convert.ToInt32(x);
public static Func<int, int, int> FuncExample2 = (x, y) => x + y;
veya temsilcisi tarafından tanımlanan imzayı kullanarak
Func<> yöntemini
Action<> çağırma.
PHP- Kodu
ActionExample1("string for x");
ActionExample2("string for x", "string for y");
Console.WriteLine($"The value is {FuncExample1("1")}");
Console.WriteLine($"The sum is {FuncExample2(1, 2)}");
Bir temsilci türünün örneklerini oluşturmak için kısa söz dizimlerini kullanın. Bir sınıfta, temsilci türünü ve eşleşen imzaya sahip bir yöntemi tanımlayın.
PHP- Kodu
public delegate void Del(string message);
public static void DelMethod(string str)
{
Console.WriteLine("DelMethod argument: {0}", str);
}
Temsilci türünün bir örneğini oluşturun ve çağırın. Aşağıdaki bildirimde, sıkıştırılmış sözdizimi gösterilmektedir.
PHP- Kodu
Del exampleDel2 = DelMethod;
exampleDel2("Hey");
Aşağıdaki bildirim tam sözdizimini kullanır.
PHP- Kodu
Del exampleDel1 = new Del(DelMethod);
exampleDel1("Hey");
try-catch ve using özel durum işlemede deyimleri
- Çoğu özel durum işleme için try-catch ifadesini kullanın.
PHP- Kodu
static string GetValueFromArray(string[] array, int index)
{
try
{
return array[index];
}
catch (System.IndexOutOfRangeException ex)
{
Console.WriteLine("Index is out of range: {0}", index);
throw;
}
}
- C# using ifadesinikullanarak kodunuzu kolaylaştırın. Yalnızca bloktaki kodun yöntemine yönelik bir çağrı olduğu bir try-finally deyiminiz varsa finally Dispose , using bunun yerine bir ifade kullanın.
Aşağıdaki örnekte,
try - finally ifade yalnızca
Dispose finally bloğunda çağırır.
PHP- Kodu
Font font1 = new Font("Arial", 10.0f);
try
{
byte charset = font1.GdiCharSet;
}
finally
{
if (font1 != null)
{
((IDisposable)font1).Dispose();
}
}
Deyimle aynı şeyi yapabilirsiniz
using .
PHP- Kodu
using (Font font2 = new Font("Arial", 10.0f))
{
byte charset2 = font2.GdiCharSet;
}
C# 8 ve sonraki sürümlerinde, küme ayraçları gerektirmeyen yeni
using sözdizimini kullanın:
PHP- Kodu
using Font font3 = new Font("Arial", 10.0f);
byte charset3 = font3.GdiCharSet;
&& ve || işleçleri
Özel durumların önüne geçmek ve gereksiz karşılaştırmaları atlayarak performansı artırmak için,
&& & || | Aşağıdaki örnekte gösterildiği gibi karşılaştırmaları gerçekleştirirken yerine kullanın.
PHP- Kodu
Console.Write("Enter a dividend: ");
int dividend = Convert.ToInt32(Console.ReadLine());
Console.Write("Enter a divisor: ");
int divisor = Convert.ToInt32(Console.ReadLine());
if ((divisor != 0) && (dividend / divisor > 0))
{
Console.WriteLine("Quotient: {0}", dividend / divisor);
}
else
{
Console.WriteLine("Attempted division by 0 ends up here.");
}
Bölen
0 ise, deyimdeki ikinci yan tümce
if bir çalışma zamanı hatasına neden olur. Ancak ilk ifade false olduğunda
&& işleci kısa devredir. Yani, ikinci ifadeyi değerlendirmez.
& işleci her ikisini de değerlendirir ve
0 olduğunda bir çalışma zamanı hatasına neden olur
divisor .
new işlecinde
Aşağıdaki bildirimlerde gösterildiği gibi, nesne örneklemesinin kısa biçimlerinden birini kullanın. İkinci örnekte,
C# 9 ' dan başlayarak kullanılabilir olan sözdizimi gösterilmektedir.
PHP- Kodu
var instance1 = new ExampleClass();
PHP- Kodu
ExampleClass instance2 = new();
Önceki bildirimler aşağıdaki bildirime eşdeğerdir.
PHP- Kodu
ExampleClass instance2 = new ExampleClass();
- Nesne oluşturma işlemini aşağıdaki örnekte gösterildiği gibi basitleştirmek için nesne başlatıcılarını kullanın.
PHP- Kodu
var instance3 = new ExampleClass { Name = "Desktop", ID = 37414,
Location = "Redmond", Age = 2.3 };
Aşağıdaki örnek, önceki örnekle aynı özellikleri ayarlar ancak başlatıcıları kullanmaz.
PHP- Kodu
var instance4 = new ExampleClass();
instance4.Name = "Desktop";
instance4.ID = 37414;
instance4.Location = "Redmond";
instance4.Age = 2.3;
Olay işleme
Daha sonra kaldırmanız
gerekmey bir olay işleyicisi tanımlayarak
lambda ifadesi kullanın.
PHP- Kodu
public Form2()
{
this.Click += (s, e) =>
{
MessageBox.Show(
((MouseEventArgs)e).Location.ToString());
};
}
Lambda ifadesi aşağıdaki geleneksel tanımı kısaltıyor.
PHP- Kodu
public Form1()
{
this.Click += new EventHandler(Form1_Click);
}
void Form1_Click(object sender, EventArgs e)
{
MessageBox.Show(((MouseEventArgs)e).Location.ToString());
}
Statik üyeler
Sınıf adını kullanarak statik üyeleri çağırma: ClassName.StaticMember. Bu uygulama, statik erişimi net hale kullanarak kodu daha okunabilir hale sağlar. Türetilmiş bir sınıfın adıyla temel sınıfta tanımlanan statik bir üyeyi uygun olarak nitelendirin. Bu kod derlenmişken, kod okunabilirliği yanıltıcıdır ve türetilmiş sınıfa aynı adla statik üye eklerseniz kod gelecekte bozabilir.
LINQ sorguları
- Sorgu değişkenleri için anlamlı adlar kullanın. Aşağıdaki seattleCustomers örnek, Seattle'da bulunan müşteriler için kullanır.
PHP- Kodu
var seattleCustomers = from customer in customers
where customer.City == "Seattle"
select customer.Name;
- Anonim türlerin özellik adlarının Pascal büyük/büyük/büyük harf kullanılarak doğru büyük harfe sahip olduğundan emin olmak için diğer adları kullanın.
PHP- Kodu
var localDistributors =
from customer in customers
join distributor in distributors on customer.City equals distributor.City
select new { Customer = customer, Distributor = distributor };
- Sonuçtaki özellik adları belirsiz olduğunda özellikleri yeniden adlandırabilirsiniz. Örneğin, sorgunuz bir müşteri adı ve dağıtımcı kimliği döndürürse, bunları sonuç olarak ve olarak bırakmak yerine müşterinin adı olduğunu ve dağıtımcı kimliği olduğunu netleştirmek için yeniden Name ID Name ID adlandırabilirsiniz.
PHP- Kodu
var localDistributors2 =
from customer in customers
join distributor in distributors on customer.City equals distributor.City
select new { CustomerName = customer.Name, DistributorID = distributor.ID };
- Sorgu değişkenlerinin ve aralık değişkenlerinin bildiriminde örtülü yazma kullanın.
PHP- Kodu
var seattleCustomers = from customer in customers
where customer.City == "Seattle"
select customer.Name;
- Önceki örneklerde gösterildiği gibi from sorgu yan tümcelerini yan tümcesi altında hizalar.
- Sonraki sorgu yan tümcelerinin azaltılmış, filtrelenmiş veri kümesi üzerinde çalışması için diğer sorgu yan tümcelerinin where önünde yan tümceleri kullanın.
PHP- Kodu
var seattleCustomers2 = from customer in customers
where customer.City == "Seattle"
orderby customer.Name
select customer;
- İç from koleksiyonlara erişmek için yan join tümcesi yerine birden çok yan tümce kullanın. Örneğin, bir nesne koleksiyonu Student her biri bir test puanları koleksiyonu içerebilir. Aşağıdaki sorgu yürütülürken, 90'ın üzerinde olan her puanı ve puanı alan öğrencinin soyadını döndürür.
PHP- Kodu
var scoreQuery = from student in students
from score in student.Scores
where score > 90
select new { Last = student.LastName, score };
Alıntı:
docs.microsoft. Bill Wagner - Olprod
|