Named Arguments (İsimli Parametreler)
Okunabilir kod yazmak en önemli kodlama alışkanlıklarımızdan biri. Her zaman yerine getiremesek de nihai amacımız daha sonradan baktığımızda anlayabileceğimiz ya da diğer yazılımcı arkadaşlarımızın anlayabileceği temiz kodlar üretmek. Bu yazıda daha okunabilir ve anlaşılabilir kod yazmak adına yapabileceğimiz küçük bir konuyla ilgili tüyo vermek istiyorum.
Kod yazarken yazılımcının ilk beklentisi kodun düzgün şekilde çalışmasıdır. Fakat takım çalışmasında bu beklenti yeterli değildir, kodun çalışması önemlidir fakat bir diğer önemli konu ise okunabilir, anlaşılabilir olmasıdır. Yazdığımız kodları gayet özümsemiş, anlamış olabiliriz. Ancak aynı ortamda çalışan başka bir yazılımcının da koda bir anlam verebilmesi, ne yapılmaya çalıştığını kolayca anlayabilmesi hedeflenmelidir. Bu konu için bir çok yaklaşım, yöntem mevcut. İşte bu yöntemlerden biri de “named arguments”. Bir senaryo üzerinden ilerleyerek named arguments konusunu hızlıca anlatmaya çalışayım. Bazı parametreler alarak belirli bir işlem yapacak bir metodumuz olsun. Geriye de örneğin boolean tipinde bir değer döndürsün. Metodumuz şu şekilde:
public bool BirSeylerYap(bool manasiz, int sayi, bool uygun, bool kontrolEdilebilir, bool basarili) { //TODO: Birşeyler yap return true; }
Evet gördüğümüz üzere baştan başa anlamsızlıklar içeren bir metoda sahibiz. Ama hiç önemli değil, metodun ne iş yaptığıyla değil, nasıl çağrılacağıyla ilgileniyoruz bu örnekte. Bu metodu çağırmak istediğimizde şu tarz bir kod yazacağız.
var sonuc = BirSeylerYap(true, 4, true, false, true);
Bu kod çalışır ve geriye bir değer döndürür. Peki bu metot çağrısını bir arkadaşınıza gösterdiğinizde nasıl yorumlayabilir? Boolean değer döndürecek, parametre olarak ise sırasıyla true, 4, true, false ve true almış bir metot çağrısı. Koda okuyan kişi “ne yapıldığını tam anlamadım ama doğru yazılmıştır herhalde” gibi bir yorum yapacaktır, öteye geçemeyecektir. Zira parametreleri okuduğunda değerleri anlasa da bir anlam çıkaramaz. Bu tarz sadece yazılımcının bildiği parametre değerlerine “magic numbers” deniliyor. Bu satırı yazan programcı bir süre sonra true/false değerlerinin veya 4 rakamının ne anlama geldiğini kendisi de unutacaktır, anlamak için ancak metodun tanımına tekrar göz atması gerekecektir.
Halbuki yukarıdaki yazım şekli yerine aşağıdaki gibi bir yazımı tercih etseydik herşey daha anlaşılır olacaktı:
var sonuc = BirSeylerYap(manasiz: true, sayi: 4, uygun: true, kontrolEdilebilir: false, basarili: true);
Bu şekilde yazmanın bir zararı olur mu? Ya da okunaklılığı bozar mı? Tabii ki hayır. Çok az bir zahmetle, belki 30 saniyemizi bu yazıma ayırarak ileride bu kodu okuyacak birçok kişiye dakikalar kazandırma, kodu daha net şekilde anlama şansı vermiş olabiliriz. İşte buradaki kullanım şekline “named arguments” deniliyor. Bu özelliği C# 4.0 sürümüyle birlikte Visual Studio IDE’sinde kullanabiliyoruz. Diğer dil veya IDE’lerde de named arguments’i destekleyen bir özellik varsa yukarıda bahsettiğim tarzdaki metotlarda kodun anlaşılır olması için bu özelliği kullanabilirsiniz.
1 Comment
Ömer
10 Mayıs 2017 at 10:00Bunun yerine true ve false değerlerini daha anlamlı değişkenlerde tutarak, parametrelere bu değişkenler verilmeli.