IRCRehberi.Net- Türkiyenin En iyi IRC ve Genel Forum Sitesi

IRCRehberi.Net- Türkiyenin En iyi IRC ve Genel Forum Sitesi (https://www.ircrehberi.net/)
-   Programlama (https://www.ircrehberi.net/programlama/)
-   -   C# Kodlama Kuralları (https://www.ircrehberi.net/programlama/78446-c-kodlama-kurallari.html)

ExCaLuBuR 19 Temmuz 2021 18:37

C# Kodlama Kuralları
 
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 getinit; }

    
// 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. Lütfen Ü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 someNumberbool isValid)
{


C# adlandırma kuralları hakkında daha fazla bilgi için bkz. [Üye Olmadan Linkleri Göremezsiniz. Lütfen Ü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. Lütfen Ü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 
010000i++)
{
    
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. Lütfen Ü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 
010000i++)
{
    
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<stringActionExample1 => Console.WriteLine($"x is: {x}");

public static 
Action<stringstringActionExample2 = (xy) => 
    
Console.WriteLine($"x is: {x}, y is {y}");

public static 
Func<stringintFuncExample1 => Convert.ToInt32(x);

public static 
Func<intintintFuncExample2 = (xy) => 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 += (se) =>
        {
            
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 senderEventArgs 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 customerDistributor 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.NameDistributorID 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.LastNamescore }; 

Alıntı:

docs.microsoft. Bill Wagner - Olprod

She 25 Temmuz 2021 07:45

Elinize sağlık güzel paylaşım olmuş

oMeN 25 Temmuz 2021 14:51

Dostum emeğine sağlık Paylaşım için teşekkür ederiz

WildCat 25 Temmuz 2021 15:10

emeginize saglik


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 17:20.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.

Copyright ©2019 - 2025 | IRCRehberi.Net