Yazılımda en zor iki işten birinin "isim vermek" olduğu şakası boşuna değildir. İyi bir isim, yorum yazmaya gerek bırakmaz; kötü bir isim ise doğru çalışan kodu bile anlaşılmaz hale getirir. İsimlendirme, temiz kodun en ucuz ve en etkili adımıdır.
Temel ilke: Niyeti anlatın
Bir isim şu soruları cevaplamalıdır: Bu nedir, ne işe yarar, nasıl kullanılır?
int d; // kötü: d ne?
int gecenGun; // daha iyi
int sonOdemedenBuyanaGecenGun; // bağlamı tam anlatıyor
İsim uzunluğu, kapsamla orantılı olmalıdır. Üç satırlık bir döngüdeki i sorun değildir; sınıf genelinde kullanılan bir alan ise açıklayıcı olmalıdır.
Türlere göre kurallar
Değişkenler ve alanlar
İsim olarak, ne tuttuğunu anlatan adlar seçin: musteriListesi, toplamTutar, sonGirisTarihi.
Boolean değerler
Evet/hayır sorusu gibi okunmalıdır: aktifMi, odendiMi, HasStock, IsEnabled, CanEdit. durum veya flag gibi isimlerden kaçının.
Metotlar
Bir eylem bildirmelidir: FaturaOlustur, StokDus, MusteriGetir. Asenkron metotlarda C# geleneği Async son ekidir: FaturaOlusturAsync.
Sınıflar
İsim olarak, tek bir sorumluluğu anlatmalıdır: FaturaHesaplayici, KargoEntegrasyonu. Manager, Helper, Utils gibi her şeyi içine alabilecek isimler genellikle sınıfın fazla iş yaptığının işaretidir.
Kaçınılması gerekenler
- Anlamsız kısaltmalar:
mstrLst,tplmgibi. - Yanıltıcı isimler: Liste olmayan bir şeye
urunListesidemek. - Tür bilgisi eklemek:
strAd,intYasgibi eski alışkanlıklar modern dillerde gereksizdir. - Benzer isimler:
musteriBilgivemusteriBilgisiaynı kapsamda ise karışıklık kaçınılmazdır. - Olumsuz boolean:
PasifDegilMigibi çift olumsuzluklar okumayı zorlaştırır.
Türkçe mi, İngilizce mi?
İki yaklaşımın da savunulabilir yanları vardır:
- İngilizce: Kütüphanelerle uyumlu, uluslararası ekip ve kaynaklarla tutarlı.
- Türkçe iş terimleri: "Cari", "irsaliye", "tevkifat" gibi kavramların birebir karşılığı yoktur; yanlış çeviri anlam kaybına yol açar.
Pratik bir orta yol: teknik kavramlar İngilizce, işe özgü terimler ise ekipçe belirlenmiş tek bir dille. Asıl önemli olan tutarlılıktır; aynı projede "Customer", "Musteri" ve "Cari" aynı şey için kullanılmamalıdır. Bu ortak dil, domain-driven design yaklaşımında da merkezi bir rol oynar.
C# isimlendirme standartları
| Öğe | Biçim | Örnek |
|---|---|---|
| Sınıf, metot, property | PascalCase | SiparisServisi, ToplamTutar |
| Yerel değişken, parametre | camelCase | siparisNo |
| Özel alan | _camelCase | _repository |
| Arayüz | I + PascalCase | ISiparisDeposu |
| Sabit | PascalCase | MaksimumDeneme |
Sık sorulan sorular
Kötü bir ismi değiştirmeye değer mi?
Evet. Modern geliştirme ortamlarında yeniden adlandırma tek tıkla ve güvenle yapılır. İyi bir isim, sonraki her okumada zaman kazandırır.
Değişken isimlerinde Türkçe karakter kullanılabilir mi?
C# buna izin verir; ancak klavye, araç ve ekip uyumu açısından çoğu ekip Türkçe karakter kullanmamayı tercih eder.
Sonuç
İyi isimler, kodun kendi kendini belgelemesini sağlar. Ekipçe bir isimlendirme sözlüğü belirlemek ve buna tutarlı şekilde uymak, projenin yıllar içinde anlaşılır kalmasının en basit yoludur.