21 Ocak 2013 Pazartesi

Kodlarda Okunabilirlik ve Anlaşılabilirlik

Özet
Bu yazıda benim sıklıkla karşılaştığım bir problem üzerinde hem sizleri bilgilendirmek hem de kendim için birçok kaynaktan topladığım ve daha sonra bakabileceğim bir açıklama oluşturmaya çalıştım. Faydalı olması dileğiyle...

İlk olarak bu konuyu niçin araştırdığımı yazmak istiyorum. Üniversiteye başladıktan sonra okulda bize öğretilen teknikleri birleştirerek çeşitli yeteneklere sahip programlar ortaya çıkarmamız isteniyor. Bildiğiniz üzere bilgisayar aleminde her geçen gün farklı birçok yeniliklerle karşılaşıyoruz. Buda bize ileride yazacağımız programları nasıl yazacağımızı bilmemizi gerektiriyor. Bu nedenle sonuç odaklı çalışmayıp, programın çalışması kadar ileride güncellenip yeni özelliklere sahip olmasının gerektiğine de dikkat etmemiz gerekiyor.


Okunabilirlik niçin gerekli ?



Takım arkadaşımız ilk bakışta anlamalı

Programcılar tarafından yazılan kod parçasının diğer takım arkadaşları veya diğer bir programcı tarafından rahatça anlaşılır olmalıdır. Şirketler sahip oldukları programı güncellemek için başka programcılara da ihtiyaç duymakta ya da takım arkadaşlarınızdan birisi farklı bir şirkette transfer olup yeni bir takım arkadaşına sahip olabilirsiniz. Peki onun sizi anlaması nasıl mümkün olacak ? 
İşte kodlamada okunabilirlik ve anlaşılabilirlik burada olağanüstü önemlidir.

Ekonomik açıdan bakmak gerekirse şirketlerin kod için iki adet belirgin ödeme şekli vardır.
    1. Kodun inşası için tek seferlik başlangıç ödemesi
    2. Tekrarlanan bakım, onarım maliyetleri


İyi yazılmış bir kod için oldukça yüksek başlangıç maliyeti fakat oldukça düşük onarım maliyetleri geçerlidir. Tabii kötü bir kod için bunun tam tersi de geçerli. Gereksiz onarım maliyetlerinin çıkması ileride ciddi bir soruna dönüşebilir. Kodumuzu okunabilir ve anlaşılabilir bir şekilde yazarsak bakım problemlerini ortadan kaldırarak ileride oluşacak maddi sorunları engelleyebiliriz.


Kırık Pencereler Teorisi' ni aklımızın bir köşesinde bulundurmak. 

Kırık  Pencereler  Teorisinin  temel  esprisi şuydu:
" Bir binadaki herhangi bir kırık pencere tamir edilmez ise; binaya kimsenin gözkulak olmadığını düşünen insanlar, diğer pencereleri de kırmak isteyecekler ve daha fazla pencere kırılacaktır. Bir süre sonra da bina penceresiz kalacaktır... "
Bu teoriyi aklımızın bir kenarında bulundurarak yazdığımız programların hatalarını fark ettikçe düzeltmeye çalışmalıyız. Eğer güzel bir iş çıkarmak istiyorsak kodlarımızdaki kırık pencereleri onarmayı bir periyoda dönüştürmeliyiz, erteleme düşüncesi asla bize karşı baskın gelmemeli. Bunu başardıktan sonra kodumuzu okunabilir ve anlaşılabilir yapmak daha da kolaylaşacaktır.



Sihirli sayılardan kaçınmak
Sihirli sayılar kodun heryerinde sizden habersiz bulunuyor olabilirler. Peki takım arkadaşımız bunu nasıl ayırt edecek ?

İşte burada sihirli sayımızı kelime olarak tanımlamak çoğu profesyonel programcı tarafından olmazsa olmaz denecek bir durum. Sihirli sayınız bir haritanın boyutu olabilir veya ekran genişliği olarak ayarlanmıştır bunu karşımızdaki kişiye kodumuzun içinde anlatmamız gerekli.

Burada verilen 87 sayısı sihirli sayı olabilir veya olmayabilir ?

for( int i = 0; i < 87; ++i )
{
        printf( "-" );
}

Sizlere " C " dilinden örnek vermek istiyorum. Eğer bu tarz sihirli sayılara sahipseniz #define HARITA  87 ile 87 sayısının haritayla ilişkili olduğunu belirtiyoruz.


Yeni kodumuz bu şekilde olursa anlaşılabilirlik açısından daha iyi olacaktır.


for( int i = 0; i < HARITA; ++i )
{
        printf( "-" );
}





The Readable Code kitabın yazarları Dustin Boswell ve Trevor Foucher 5 yıl boyunca "kötü kodlama" yapısındaki birçok örneği inceleyip bir araştırma yapmışlar. Okunabilirlik açısından çok geniş bilgiler bulunuyor.


Bu kitabınızı okumanızı  kesinlikle öneririm.




Kitap için: The Readable Code adresini ziyaret edebilirsiniz.








    Kaynaklar:
    1. http://www.ppig.org/papers/23/31%20Saha.pdf
    2. http://www.cprogramming.com/tutorial/programming-style-readability.html
    3. http://www.cprogramming.com/tutorial/style.html
    4. http://www.wikihow.com/Write-Readable-Code-Without-Comments

    Hiç yorum yok:

    Yorum Gönder