Kod A.Ş. – Kod Anonim Şirketi

Programcılar tarafından yazılan metotların ve kullanılan değişken isimlerinin çoğu anonim, yani adı sanı belirsiz. Kullanılan isimler ilk bakışta kod bünyesinde olup bitenleri ifade gücünden aciz. Bu kodun okunabilirliğini düşüren bir faktör. Zamanımızın büyük bir kısmını kod okuyarak geçirdiğimizi düşündüğümüzde, seçilen isimlerin ne kadar önemli olduğunu ortaya çıkmakta.

Anonim kod sadece metot ve değişken isimleri ile sınırlı değil. Dün katıldığım bir kod inceleme oturumunda (peer code review) kodun büyük bir kısmını oluşturan koşullu mantık yapılarının (if/else) da anonimlikten nasiplerini aldıklarına tekrar şahit oldum. Oturum esnasında aşağidaki tarzda bir if yapısa denk gelince, burada ne tür bir işlemin yapıldığını sormadan edemedim, çünkü birkaç sefer okumama rağmen, kodun ne yaptığını anlayamadım.

// bla bla bla bla
if(pos.length() > 0 && indexAccess.isLucene() && blabla && blabla .....){
}

Sağolsun çalışma arkadaşım kodun ne yaptığını bana açıkladı. Ben ne zaman bu kod parçasını okumak istesem, yanımda tercüman olarak çalışma arkadaşımı da bulundurmam gerekiyor. Ne kadar pratik degil mi!

Bu kod parçasında gözüme çarpan iki sorun var. Birincisi if bünyesinde olup bitenleri anlamak hemen hemen imkansız. İkincisi kodun ne yaptığını açıklamak için //bla bla seklinde koda yorum eklenmiş. Bu kadar zaman harcayip, koda yorum eklemek yerine, if bünyesindeki kodu bir metoda dünüştürüp, bu metoda anlamlı bir isim versek nasıl olurdu?

if(searchable()){
}

private boolean searchable(){
    return pos.length() > 0 && indexAccess.isLucene() && blabla && blabla .....
}

Şimdi if bünyesin olup bitenleri anlamak benim için daha kolaylaştı. Anonim olan if içindeki kodu bir metoda dönüştürerek, ona bir kişilik kazandırdım. Bu metot ismini gören programcı metot bünyesinde olup bitenleri aşağı yukarı kestirebilir. Bunun için kodu yazan programcıyı tercüman olarak kullanmak zorunda değil.

Eğer anonim kodu nasıl anlarım derseniz, kod içinde bırakılan açıklayıcı yorumların izini sürün derim. Eğer bir değişken ismini ya da if bünyesinde olup bitenleri açıklayıcı bir yorum bırakılmışsa, o zaman o kod anonim koddur.

Buraya kadar olan kodun teknik olarak nasıl daha okunabilir hale getirilebilir olması ile ilgiliydi. Şimdi gelelim programcının neden anonim yapıları tercih ettiğine. Bunu öğrenmek için programcıya şu soruyu sordum: “Bana if bünyesinde olup bitenleri ifade edebilecek güçte bir metot ismi söyleyebilir misin?“. 10 saniye… 20 saniye… 30 saniye geçti ve programcı hiç te fena olmayan bir öneride bulundu. Ama akabinde yorumu şu oldu: “Bu ismi düşünene kadar ben if için gerekli kodu yazmıştım bile!”. Ama marifet kod yazmak değil ki canım kardeşim. Marifet okunabilen kod yazmaktır.

Programcılar bu tarz kod yazmaya alışmışlar ve farkında olmadan her gün anonim, yani okunması zor kod üretiyorlar. Bunu değiştirmek için tavsiyem programcının kod kataları yapmasıdır. Kod Kata ve Pratik Yapmanın Önemi başlıklı yazımda pratik yapmanın programcı için ne kadar önemli olduğunun altını çizmiştim. Yaptığım kataları programcılarla paylaşmak için KodKata.com isminde bir websayfa hazırladım. Vakit bulduğunuzda bir göz atmanızı tavsiye ederim. Bu konudaki geri bildirimleriniz beni sevindirecektir.

Kod A.Ş. iflasa mahkum. Bu batan gemiden ayrilmanın zamanıdır.

EOF (End Of Fun)
Özcan Acar