İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır
Onder Teker
on_der_tek_er@yahoo.com

Okunaklı Kod Yazmanın Önemi

Bir Kodun Okunaklı Olması

Bir kodun okunaklı olmasının yararlarından bahsetmeden önce 'okunaklı kod' teriminden ne kastettiğimizi açıklayalım. Okunaklı kod, yazan kişiden başka kişiler tarafından anlaşılabilen veya yazan kişinin aradan uzun bir süre geçtikten sonra anlayabildiği koddur. 'Benin yazdığım kodu kimse çözemez!' diye övünmek, karmaşık kod yazmanın zeka belirtisi olduğunu sanmak, hızlı kod yazarak yöneticilerin takdirini kazanmak gibi saçma düşünceler bir çok programcı tarafından maalesef paylaşılmaktadır. Okunmaz kod yazmayı bir çeşit iş güvencesi diye düşünenler de bulunmaktadır. Öyle ya, bir kod parçasını yazanından başka kimse çözemiyorsa o kişi nasıl işten atılır? Ama deneyim durumun hiç de öyle olmadığını gösteriyor. İyi kod yazmayanların yeri, kodun bakımında zorlandıkları için daha az sağlamdır. Hiç bir firma, 'Bu programcının kodu kötü. Sadece kendisi okuyabiliyor. Aman onu işten çıkarmayalım!' diye düşünmez. Tersini yapan çok yer var.

Akıllı, yazılım yönetimi bilgili ve yetenekli bir yönetici asla yönettiği yazılımın okunaksız olmasına izin vermez. Bir çok şirket programcının yazdığı kodu açıklayan belgeler yazmasını zorunlu tutar. Sadece kodun nasıl çalıştığı, genel olarak ne gibi işlevler gördüğü değil, her yapılan işlemin belgelenmesi istenmektedir. Bu bazı programcılara bir yük olarak gelebilir ama gereklidir ve gerekliliği çok acı deneyimler sonucu binlerce kez ispatlanmıştır. Elbette bunu abartmak, her satıra açıklama koymak yanlış olur. Hatta hızlı kod yazılan ortamlarda dokümantasyona hiç vakit olmayabilir. Ama en azından okunaklı kod yazılmalıdır. Bu vakit kaybı değil kazanç getirir.

Okunaklı kodun faydası öncelikle yazan kişiyedir. Firmaya, yöneticilere, o kodu devralan kişilere olan faydası ikinci plandadır. Çünkü yazılan her kod öncelikle yazarı tarafından okunur. 'Ben ne yapmışım burda?' diyorsanız sizin için de tehlike çanları çalıyor demektir. Bir kod bir kere üretilir ama bir çok kere değiştirilir. Yani 1 kere yazma N kere okuma vardır. Kodun nasıl okunduğu nasıl yazlıdığından önemlidir. Zor olan bir uygulamyı yazmak değil 'koda bakmak'tır. Uygulama yazmak eğlenceli olabilir. Ama bakım her programcının üstlenmek zorunda olduğu sıkıcı bir iştir. Yazdığınız kodun bakımını başkası yapıyorsa hiç sevinmeyin. Okunaklı kod yazma zorunluluğunuz iki kat artıyor. Siz hala aynı firmada çalışıyorsanız en ufak bir sorunda, bakımı yapan kişinin anlamadığı en küçük konuda görev yine size düşecektir.

Okunaklı Kod Yazmanın İlkeleri

Okunaklı kod yazmak biraz yetenek ve zeka isteyen bir iş olsa da bunu herkes tarafından bilinen kuralları vardır.

Doğru İsimler Verin.

Yazdığınız her değişkene, method'a property'ye class'a anlamlı, basit, açıklayıcı isimler verin. Bunun için çok yaratıcı olmaya gerek yok, zaten belli durumlarda kullanılan isimler bellidir. Her dilin isimlendirme geleneği vardır. Örneğin, Java dilinin isimlendirme geleneği daha başından belirlenmiştir. Bütün class isimleri isim olarak verilir. Methodlar hep bir fiil'le başlar bir isimle devam eder. 'List' class'ının 'add' diye bir method'u vardır. Bu class'ın da bu method'un da ne yaptığı bellidir. Bir okul programı yapılıyorsa Student diye bir class olmalı, School diye bir başka class olmalı ve registerStudent() diye bir methodu olmalıdır. Yazması uzun olsun diye kısa isimler vermekten kesinlikle kaçıılmalıdır.

Yanlış isimler vermekten korkmayın. Diyelimki bir isim verdiniz sonradan yanlış isim olduğunu anladınız. Hemen değiştirin. Ne kadar yerde değişiklik yapmaya gerek olursa olsun. Editörünüzün 'Replace All' seçeneği ne güne duruyor?

Biçimli (Formatlı) Kod Yazın

Biçimli (formatlı) yani düzenli kod yazın. Açılan parantezi doğru yerde kapatın. Aynı bloğun içinde bulunan satırlar hep aynı yerden başlasın. Bir şey bir başka işeyin içindeyse mutlaka bir tab'lık alan sağda olsun. Bazı editörler bunu otomatik yapıyor. Bazıları bir tıklamayla düzeltiyor kodu.

Kimse yazdığınız koda 'Ne kadarrr çirrkinn!' demesin. Okuyan kişi, ne kadar titizlik meraklısı olmasa da biçimsiz yazılan kodun kötü olduğunu düşünür. Çok kötü bir görünüşü olan arabanın sağlam olduğuna kim inanır? Güzel olup değersiz olmak sadece magazin dünyasının ünlülerine yakışır. Bir kod parçası hem değerli hem güzel olmalıdır.

Modüler Kod Yazın

Her satırda küçük bir kod parçası olsun. Her method sadece bir işlev görsün. Her class sadece birbiriyle ilişkili işlevleri barındırsın. Uzun class'lar uzun methodlar uzun satırlar okunaklılığı öldürdüğü gibi hata yapmanıza da yol açabilir.

Ne kadar basit kod yazıyorsanız o kadar profesyonelsiniz. Karmaşık kod yazmak amatörlerin işidir. Profesyoneller karmaşık işleri basit çözümlerle başaran kişilerdir. Sizin göreviniz süreçteki karmaşıklığı koda yansıtmak değil, o karmaşıklığı yok etmektir. Basitlik bütün bilimsel ve teknik alanlarda gerekli bir özelliktir. F=ma ve E=mc2 gibi formuller çok basittir. Hüner karmaşık bir sisteme basit bir çözüm getirmektedir. Bunu yapamıyorsanız acemisiniz.

Standart Kütüphaneler Kullanın

Kullandığınız dilin kütüphanelerindeki methodları kullanarak kod yazın. Eğer size lazım olan işlev standart kütüphanelerde yoksa bilinen firmaların kütüphanelerini kullanın. Mecbur kalmadıkça kendiniz kod yazmayın. Bu, bir kütüphaneyi öğrenme güçlüğü nedeniyle kendinizin yazmasından daha uzun sürebilir. Ama o süreyi harcayıp bir kütüphaneyi öğrenmiş olursunuz. Kütüphane kullanmak kodun sağlamlığı açısından gereklidir. Çünkü denenmiş bir kodu kullanmak, kenidizin yeni yazdığı test edilmemiş kodu kullanmaktan iyidir. Hepsinden önemlisi, kodu okuyan kişi standart kütüphaneleri anlar. Anlamasa da araştırma yaparak açıklama bulabilir. Ama sizin kodunuzun böyle bir rahatlığı yoktur. 'Ben daha iyisini yaptım!' diye her yerden bulunabilçek bir class'ı kendisi yazan kişiler kesinlikle daha kötüsünü yaparlar. Programcının görevi kütüphane yapmak değil, yapılmış kütüphaneleri belli bir ürün geliştirmek için kullanmaktır.

Kendinizi fazla beğenmeyin Hiç bir progrmacı standart kütüphanelerde olan class'ların daha iyisini yapamaz. Çünkü onlar bir çok kişi tarafından yazılmış, denetlenmiş ve test edilmiş kodlardır. Buna rağmen oluşan bug'lar zamanla giderilmiş, performans arttırmak için bir çok kere üzerinde çalışılmıştır. Onların yaptığından daha iyisini hem de tek başına, hem de az zamanda, hem de sadece bir kaç yıllık deneyiminizle yapabileceğinizi sanıyorsanız yanılıyorsunuz. Tüm kendi beğenmiş insanların yanıldığı gibi.

Peroformans İçin Basitliği Kurban Etmeyin

Çok küçük bir performans kazancı için karmaşık kodlar yazmayın. Tanımlanan değişkeni iki kere kullanmak, bir döngü içerisinde iki işi yapmak, performans kaybına yol açacak diye fonksiyon çağırmaktan imtina etmek, her şeyi tek class'ta hatta tek method'da halletmek gibi yollar, size belki %1 veya %2 perofrmans kazancı sağlar ama kodun kalitesine %90 kaybettirir. Yapılan her değişiklikte performansı arttırmak için yaptığınız ekstra kodu da değiştirmeniz gerekir. Hatta bir performans arttırıcı önlem belli bir durum için geçerli olduğu için, değişiklik durumunda anlamsız kalabilir. Elbette çok önemli performans kazançları sağlayacaksa karmaşık kod yazılabilir. Ama programcı performanstan kazanırken basitlikten ve okunaklılıktan kaybettiğinin bilincinde olmalı, ona göre optimum çözümü düşünmelidir.

Sonuç

Bir kodun okunaklılığı, yazılımın değerlendirilmesi için önemli bir kriterdir. Deneyim, basit kodun en hızlı çalışan, en kolay değiştirilebilen, en kolay devredilebilen veya ortak kullanılabilen kod olduğunu göstermiştir. Ancak basit kod yazmak zor ve karmaşık bir iştir. Yavaş yavaş kazanılması gereken bir beceri diye de düşünmek mümkündür. Anlaşılmaz olmak için bir şair için iyi bir özellik olabilir. 'Beni anlamıyorlar mirim!' demeye hiç bir programcının hakkı yoktur. Demek istediğimi bilmem anlatabildim mi?

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır