C-Sharp

[[TOC]]

C Sharp

Kodlamaya başlamadan önce Visaul Studio > Tools Options Menüsünden aşağıdaki seçeneklerin hepsi kaldırılmalıdır. Bu sayede parantez açılışları aynı satırda kapanışları yeni satırda yer alacaktır (Java Style)

image.png

Sınıflar

  1. Her bir kelimenin ilk harfi büyük diğerleri küçük harfle başlamalıdır.
    Örnek: ServiceForm
  2. Her bir sınıf mutlaka erişimci bilgisi içermelidir.
    Örnek: public ServiceForm
  3. Classın ne için kullanıldığı Summary comment ile yazılmalıdır.
    Örnek;

    /// <summary>
    /// Müşterinin mesleği/işi/uğraşısı
    /// </summary>
    public class Occupation {
      ...
    }
  4. Abstrac Classlar mutlaka Base ön ekini almalıdır.
    Örnek; public abstract class BaseNotificationProvider{ }

Sınıf İsimlerinde Örnekleri

Konum Ek Kullaım Amacı Örnek
Prefix Base Abstract sınıfları tanımlamak için kullanılır. public class BaseApiController {...}
Suffix Filter Repoistory veya ApiController tarafında kullanılacak Filtre (Kriter) sınıfları tanımlamak için kullanılır public class CustomerFilter {...}
Suffix Repository DB Repository tanımı yapmak için kullanılır public class CustomerRepository {...}
Suffix Controller Web API Controller tanımlamak için kullanılır public class CustomerController {...}
Suffix DTO Bir domain sınıfının DTO karşılığını isimlendirmek için kullanılır. public class CustomerDTO {...}

Özellikler (Properties)

  1. Her bir kelimenin ilk harfi büyük diğerleri küçük harfle başlamalıdır.
    Örnek: string Comment
  2. Get ve Set metodları özel bir işlem yapılmayacaksa basit yazılmalıdır.
    Örnek: string Comment { get; set; }
  3. Özelliğin erişimcisi mutlaka yazılmalıdır, boş bırakılmamalıdır.
    Örnek: public Comment { get; set; }
  4. Özelliğin ne için kullanıldığı Summary comment ile yazılmalıdır.
    Örnek;

    /// <summary>
    /// Müşteri ile ilgili açıklama ve not alanı.
    /// </summary>
    public string Comment { get; set; }

Değişkenler (Variables)

  1. Tüm değişkenler kullanım amaçlarıyla ilgili açık bir isme sahip olmalıdır.
  2. Değişken adlarında olabildiğince kısaltma kullanılmamalıdır.
  3. Eğer bir liste değişkeniyse mutalaka sonunda çoğul eki olmalıdır.
  4. Online LinqToSQL sorgularının adı query ile başlar veya tek bir sorgu yazılacaksa sadece query olarak yazılır.

Örnek Kullanımlar.

Örnek Açıklama
long userId; Tek bir Id değeri içeren değişkendir.
long[] userIds Kullanıcı Id’lerinin tutulduğu bir değişkenler dizisidir.
bool disableNotificationsOnUserAction=true Kullanıcı işlemlerinde bildirimlerin iptal edilmesi için kullanılan bir değişkendir. Değişken adı ne amaçla kullanıldığını açıkca ifade ediyor.
var queryOrderDetail=from x in ... Bir LINQ-SQL sorgusu olduğunu ifade ediyor. Diğer bir deyişle doğrudan DB’den veri çekecen bir sorgu olduğunu ifade ediyor.
List<City> result=null; Geriye şehir listesi dönen bir metodun geri dönüş değişkenin adı olarak kulanılır.

Varsayılan değişken adları

Yaygın İsim Açıklama Örnek
id Tek bir id değerini bulunduğu bloklarda kullanılır. var id = user.Id;
parentId Bağlı kayıtların bulunduğu master kaydın Id değeridir. var parentId = orderDetail.Order.Id;
entity Domain model üzerinden yer alan bir sınıfın Instance’ını temsil eder. var entity = new ServiceForm();
dto Domain model üzerinden yer alan bir sınıfın Instance’ını temsil eder. var dto=new ServiceFormDTO();
query Linq2Sql sorgusunu atamak için kullanılan varsayılan değişken adıdır. var query=from x in db.ServiceTypes;
result Bir metodun geriye döneceği değeri atmak için kullanılan varsayılan değişken adıdır. var result=...;return result;
item Bir entity veya liste içerisinde yer alan nesneyi ifade eder. var item=list.FirstOrDefault();

Metodlar (Method and Functions)

  1. Her bir kelimenin ilk harfi büyük diğerleri küçük harfle başlamalıdır.
    Örnek: public void SampleMethodName(){...}
  2. Her metod mutlaka yaptığı ana davranışla ilgili bilgi içermelidir. Bu bilgileri aşağıdaki tablodan öğrenebilirsin.
Konum Ek Kullaım Amacı Örnek
Prefix Get Geriye bir liste veya entity dönen metodların başına yazılmalıdır public List<UserGroup> GetUserGroups();
Prefix Set Veri setlemek işemleri yürüten metodların başına yazılmalıdır public void SetValues(Product entity, Product dto)
Prefix Load Veri kaynakta yer alan verileri farklı bir kaynağa yüklemek için kullanılan metodların başına yazılır. Geriye bir veri dönmesi beklenmez. public void LoadUserSettings()
Prefix Show Arayüzde ilgili alanı gizlemek veya göstermek için kullanılan metodların başına yazılır. public void ShowPaymentOptions()
Prefix Try Yapılmak istenen işlemin başarılı olup olmayacağı konusunda bir netlik yoksa, yazılan metod adının başına eklenir. public void TryDeleteOrder(Order entity)
Middle By Yapılmak istenen işlem bir kritere göre yapılacaksa kriterin adının önüne bu ifade eklenir. public List<User> GetUsersByUserGroup(UserGroup userGroup) veya public void DeleteOrderByDealer(Dealer dealer)
Suffix s Metodun yaptığı işlem birden fazla kaydı etkiliyor veya geriye bir liste dönüyorsa adına sonuna çoğul eki eklenir. Titles ve Cites gibi public List<Title> GetTitles() veya public void DeleteEMployees(…)`
Suffix AsDTO Eğer bir metod verdiği sonuçları DTO nesneleri olarak veriyorsa ve aynı isimde Entity olarak veren bir method varsa DTO dönen metodun sonuna AsDTO eklenir. public List<ProgressPaymentDTO> GetProgressPaymentAsDTO()
Suffix AsQuery Bir metod geriye döndüğü değer henüz çalıştırılmamış ve Linq sorgusu (online sorgu) ise metod adının sonuna eklenir. public IQuery<ServiceForm> GetAsQuery()
Prefix Insert Insert işlemi için kullanılan metodların başına eklenir public void InsertCallWithFile()
Prefix Update Güncelleme işlemi için kullanılan metodların başına eklenir. public void UpdateOrderStatus()
Prefix Delete Silme işlemi için kullanılan metodların başına eklenir. public void DeleteUserGroupRights()
Prefix BulkInsert Toplu insert işlemi yapan bir metodsa metod adının başına eklenir. public void BulkInsertDealers()
Prefix+Suffix SaveFile Diske dosya yazan bir işlemse metodun başına eklenir public void SaveUserProfileFile()

Parametreler (Arguments)

Metodlarda kullanılan parametreler

Interface

  1. Tüm Interfaceler I harfi ile başlamalıdır.
  2. Base Interface’ler _I ile başlamalıdır.