public class Musteri
{
public int MusteriId {get; set;}
public string FULLNAME {get; set;}
public string İşAdresi {get; set;}
public string Ev_Adresi{get; set;}
}
Şeklinde bir şeydi aslında bu şekilde bir sorun yok gibi gözükse de isimlendirme standartlarına göre bir çok terslik söz konusudur.
İlk olarak Türkçe karakter sorununu ele alalım.
Normalde sıkıntı yok Türkçe karakter kullanabilirsiniz ama şu sorun şurada çıkıyor programı Türkçe karakter desteği olmayan bir bilgisayarda açmaya çalıştığınızda hata alacaksınız. Diğer bir problem ise büyük bir şirkette çalışıyorsunuz bir framework geliştirdiniz adıda Şampuan olsun ve amerikadaki iş ortaklığı yaptığınız şirkete gönderdiniz de adamlarda Ş harfi yok frameworkü nasıl çağırıp kullanacak ?:D
Ayrıca yazdığınız kod ya tamamen türkçe yada tamemen ingilizce olsun. Türkçe olacaksa bile yinede Türkçe harf kullanmamaya özen gösterin. Bunun tercihi tamamen size kalmış bir şey ama tavsiyem ingilizce kullanmanız çünkü kelimeleri unutmamamıza yardımcı oluyor.
Aman benim yazdığım kod amerikaya gidene kadar çok zaman var diyebilirsiniz ama başta kendinizi nasıl alıştırırsanız öyle gider.
Bu kadar hikaye yeter peki bu iş nasıl olmalı bunun bir standardı yok mu? Tabii ki de var bu standartları ele alıp inceleyelim ve hangisini nerelerde kullanabiliriz bunlara bakalım. Bu makalede beş adet isimlendirme standardını inceleyip C# dilinde nerelerde kullanabileceğimize göz atacağız.
* Pascal Standardı
Bu standarda göre oluşturulan değişken isimlerinde her kelimenin baş harfleri büyük yazılır.
Örnek
KullaniciAdi
OgrenciOkulNumarasi
EvAdresi
* Camel Standardı
Bu standarda göre de oluşturulan değişkenlerin ilk kelimesi küçük harf diğer kelimeler baş harfi büyük harf olacak şekilde yazılır.
Örnek
kullaniciAdi
ogrenciOkulNumarasi
evAdresi
* Hungarian Standardı,
Pascal standardı kullanılır tek farklı kullanılan tipin anlaşılırlığını sağlamak adına değişkenin başında o tipin ön takısı koyulur.
Örnek
Tip Takısı İsimlendirme Örneği
bool b bKullaniciDurumu
char chr chrBasHarf
double d dAlinanUcret
float f fMaasOrtalamasi
int i iYas
long l lDunyaninCevresi
string str strAdi
Not: Bu standardı C# dilinde ben hiç karşılaşmadım ama böyle bir isimlendirme standardı da var.
* UnderScore Standardı
Pascal standardına benzer tek farkı kelimelerin arasına alt tire koyularak yazılır.
Örnek
Kullanici_Adi
Ad_Soyad
Kitap_Okur_Sayisi
* UpperScore Standardı
Bu standart ise pascal ile underscore standardının birleşimine benzer ek olarak her harf büyük harf ile yazılır.
Örnek
KULLANICI_ADİ
PERSONEL_MAAS
OGRENCİ_NUMARASİ
Nerede Hangisini Seçeceğiz?
İnternet de diğer makalelere bakacak olursanız genelde hangisi hoşunuza gidiyorsa onu kullanın gibi kelimeler kullanılır ama bana göre o şekilde değildir. Siz bir dil üzeriden ilerliyorsunuz ve her dilin kendi yapısında bir isimlendirme standardı mevcuttur sınıf, methot, enum isimleri belirli bir standarda dayalıdır. Onlara bakarak sizde o şekilde kullanmanız daha doğrudur. tabi kendinizde bir standart oluşturup ona göre ilerleyebilirsiniz ama o dilin standardına göre gitmek daha mantıklı geliyor...
C# Kodlama ve İsimlendirme Standartları
Buradaki isimlendirme standartlarının genel özelliği okunaklı olmasıdır ayrıca Microsoft'un .NET framework'ü bu isimlendirme standardına göre geliştirmiş olması nedeni ile bu şekilde kullanılıyor.
Bu bölümdeki anlattıklarımı .net içerisindeki kütüphanelerin kodlarına bakarak daha fazla örneğe erişebilirsiniz. Bunu da visual studio içerisinde incelemek istediğiniz sınıfın adını yazıp F12 tuşuna basarak yapabilirsiniz.
* Sınıf ve method isimlendirilmesi
Sınıf ve methot isimlendirmeleri için pascal standardını kullanıyoruz. Ayrıca isim verirken tam ad veya tamlama şeklinde kullanın ve tam olarak o sınıfın veya methot' ne iş yaptığını özetlesin Örneğin : Personel veya PersonelPozisyonu veya MusteriBilgisi gibi...
Örnek
public class MusteriBilgisi
{
public void EvAdresi()
{
//...
}
public void IsYeriAdresi()
{
//...
}
}
* Methot parametreleri ve yerel değişkenler
Bu ikisi için ise camel standardına göre isimlendirme yapmamız gerekiyor.
Örnek
public class NotSupportedException
{
public void NotSupportedException(string message, Exception innerException)
{
int exceptionCount = innerException.Exception.Count;
// ...
}
}
* Sınıf İçindeki Değişkenlerinin İsimlendirilmesi
Buradaki isimlendirme standardımız da camel standardıdır. genel olarak sınıf adının ilk harfi küçük diğerlerinin baş harfi büyüktür ancak istisnai durumlar söz konusudur. bunlardan biri sınıf içerisindeki private değişkenler alt tire kullanarak isimlendirilir. public değişkenler ise camel standardına göre isimlendirilir
Örnek
Buradaki isimlendirme standardımız da camel standardıdır. genel olarak sınıf adının ilk harfi küçük diğerlerinin baş harfi büyüktür ancak istisnai durumlar söz konusudur. bunlardan biri sınıf içerisindeki private değişkenler alt tire kullanarak isimlendirilir. public değişkenler ise camel standardına göre isimlendirilir
Örnek
// public değişkenler
public Stream stream;
public HttpStyleUriParser httpStyleUriParser;
// private değişkenler
private CancellationToken _cancellationToken;
private TextWriter _textWriter;
* Değişken Tiplerin İsimlendirilmesi
int, string, byte, long vb. tiplerinin isimlendirilmesi sizin belirlediğiniz isimlere göre olmalı ve camel standardına göre yazılmalı.
Örnek
int benimYasim;
string adSoyad;
bool isKayitDurumu;
string adSoyad;
bool isKayitDurumu;
* Arayüz İsimlendirmesi
Arayüzlerin isimlendirmesi standart olarak Interface'in I harfi ile başlar. ve pascal standardı kullanılır.
Örnek
public interface IDisposable
{
}
public interface IFormatProvider
{
}
public interface IEquatable
{
}
{
}
public interface IFormatProvider
{
}
public interface IEquatable
{
}
* Enum isimlendirmeleri
Enum isimlerdirmelerinde pascal standardı kullanılır. Buna ek olarak genellikle tekil isimlendirmeler yapılır ama istisnai durumları söz konusudur.
Örnek
public enum Renk
{
Sari,
Kirmizi,
Mavi,
Yesil,
Gri,
Turuncu
}
// istisna durumunda fark ederseniz çoğul isimle bitmiş -ler eki almıştır.
public enum ResimTipleri
{
KullaniciFotografi = 0,
YarismaciFotografi = 1,
KapakFotografi = 2
}
{
Sari,
Kirmizi,
Mavi,
Yesil,
Gri,
Turuncu
}
// istisna durumunda fark ederseniz çoğul isimle bitmiş -ler eki almıştır.
public enum ResimTipleri
{
KullaniciFotografi = 0,
YarismaciFotografi = 1,
KapakFotografi = 2
}
* Sınıf İçerisindeki Properties, Değişken, Methot Sıralaması
Başlık da tam olarak anlatamadım ama demek istediğim yapıcı methot, değişkenler, properties, methotların sınıf içerisinde hangi öncelik ile yazılması gerektiğine genel olarak bakalım.
Örnek
public class OrnekSınıfımız
{
// Sınıfın en üst kısmında Yapıcı Methot(Constructor) bulunur..
public OrnekSınıfımız()
{
// ...
}
//Yapıcı methotun altında ise sabit(const) değişkenler bulunur..
public const string sehir="Sakarya";
// Static değişkenlerin altında static değişkenler bulunur..
public static string Stream;
public static decimal Reserves;
// Static değişkenlerin altında public ve private değişkenler gelir..
public decimal uydurmaDegiskenAdi;
private string adSoyad;
// Yerel değişkenlerin altında propertiesler gelir..
public string X{get; set;}
public int Y {get; set;}
public DateTime KapanisTarihi{get; set;}
// Daha sonra methotlar geliyor ancak burada methotun void, static, virtual, abstract vb. olmasının bir önemi yoktur. Daha çok methotların birbiri arasındaki ilişkiye göre sıralanır..
public int EveUzaklık()
{
// ...
}
public override void Ekle()
{
// ...
}
public virtualMusteriAdresi(int musteriId)
{
// ...
}
}
{
// Sınıfın en üst kısmında Yapıcı Methot(Constructor) bulunur..
public OrnekSınıfımız()
{
// ...
}
//Yapıcı methotun altında ise sabit(const) değişkenler bulunur..
public const string sehir="Sakarya";
// Static değişkenlerin altında static değişkenler bulunur..
public static string Stream;
public static decimal Reserves;
// Static değişkenlerin altında public ve private değişkenler gelir..
public decimal uydurmaDegiskenAdi;
private string adSoyad;
public string X{get; set;}
public int Y {get; set;}
public DateTime KapanisTarihi{get; set;}
// Daha sonra methotlar geliyor ancak burada methotun void, static, virtual, abstract vb. olmasının bir önemi yoktur. Daha çok methotların birbiri arasındaki ilişkiye göre sıralanır..
public int EveUzaklık()
{
// ...
}
public override void Ekle()
{
// ...
}
public virtualMusteriAdresi(int musteriId)
{
// ...
}
}
Sonuç
Sonuç olarak bu makalemizde isimlendirme standartlarını ve C# dilinin kodlama standartlarını incelemeye çalıştık. Genel olarak bütün tiplerin isimlendirilmesini vermeye çalıştım fakat gözden kaçırdıklarım varsa yorum olarak sorabilirsiniz.
Bu standartlara dikkat ederek daha temiz kodlamalar yazmak konusuna giriş yapmış oluruz. Tabii ki bir tek bununla yeterli değildir tasarım desenleri(dizayn patterns) gibi birçok konuya da hakim olmak gerekir. Unutmayın herkes kod yazabilir sizin onlardan farkınız olsun.
C# isimlendirme standartları için yararlandığım kaynak :