Okunabilir Kodun Gerekliliği
Gün geçtikçe güzel, okunakla kod yazmanın önemine, gerekliliğine şahit oluyorum. Kod yazmak komutları alt alta dizmek ve öylece günü, projeyi, ödevi bitirmek olmamalı bence. Yeni bir programlama dili öğrendiğimiz zaman, faydalandığımız kaynak, anlatımın ilk sayfalarında dil içerisinde komut satırlarının nasıl yapılacağından bahseder/bahsetmelidir de. Peki kod içerisine yazacağımız bu satırların çıktılarını ekranda göremeyeceksek neden ilk öğretilmeye çalışılan şey o oluyor? Ya da her (hepsini incelemedim tabiki) programlama dilinde neden komut satırları var? Bunun bir sebebi, güzel bir amacı olmalı değil mi?
Kişi kendi kodunu yazdığında, bunu okuması ve anlaması kolay oluyor ufak çaplı projelerde. Ancak projenin boyutu büyüdükçe ve yazdığınız kodun üzerinden zaman geçtiğinde durum değişiyor. Eğer kodlarınızın arasında komut/açıklama satırları yoksa kendi yazdığınız kodu anlamadığınız zamanlar olmuştur, olacaktır mutlaka. Tabi sadece kendi kodunuzu okuyorsanız, başkaların yazdığı kodu okuma/inceleme fırsatı bulamadıysanız bahsettiğim durum ile karşılaşma süreniz uzun olacaktır. Son bir kaç gün içerisinde bir kaç arkadaşın yazdığı kodları okuma fırsatım oldu. Bu yazıyı yazma fikrinin tetikleyicisi de o kodlardır. Yazılan kodda ufak bir hata arıyorsunuz, ancak kod satırı fazla içiçe yazılmış ve yorum satırları yoksa, önce kodu analiz edip düzensiz yazılmış kodun ne yapmaya çalıştığını anlamak ile “gereksiz” zaman harcıyorsunuz. Bu da sorunu bulmak yerine zamanınızı ve enerjinizi farklı bir şeye harcamanıza sebep oluyor.
Şu iki resme baktığınız zaman ne demek istediğimi daha net anlayacaksınız. Daha güzel örnekleri vardır mutlaka. Ancak elimde şimdilik bunlar var. Arasındaki 7 fark?
Yazının sebebini açıkladıktan sonra düzgün ve açıklamalı yazacağımız kodun bize ve başkalarına ne tür faydaları olacağını yazmak istiyorum:
// Yazdığınız kodu, düzenli ve açıklamalı yazmışsanız uzun bir süre geçtikten sonra baktığınızda anlayabilir, baştan yazmaktansa üzerinde geliştirme yapabilir, farklı bir projede kullanabilirsiniz.
// Yazacağınız kodlar her zaman sadece sizi ilgilendirecek bir parça olmayacaktır, bunu paylaşmak istediğiniz, başkalarının faydalanması istediğiniz durumlar olacaktır. Açıklaması olmayan, düzenli yazılmayan kodun kimseye faydası olmayacaktır. Yazdığınız kodu anlamak yerine kişi kendisi baştan yazmayı tercih edecektir büyük ihtimalle.
// Eğer kodunuzda bir hata olduğunda, başkalarının kodunuzu inceleyip hatayı bulmasını istiyorsanız, kodunuzun düzenli ve açıklamalı olması hem hatayı bulmaya çalışan kişinin hevesini kırmaz hem de hatayı daha çabuk bularak iki taraf için zaman kazancı sağlar.
// Yarın öbür gün büyük şirketlerde çalışma ihtimaliniz her zaman var. Bu şirketlerde bin, milyon tane kod satırı içeren projelerde yer alacaksınız. Sizden önce yazılmış bu projenin kodları içerisinde açıklama satırları bolca vardır/olmalıdır. Sizden kodu anlayıp üzerine ekleme yapmanızı isteyeceklerdir. Yaptığınız eklemeler için sizden de açıklama satırları bekleyeceklerdir. Sizden sonra çalışacaklar için. Bu böyle gidecektir. Şimdiden alışkanlık edinmenin kimseye zararı olmaz değil mi?
// Yazdığınız koda özen gösterdiğiniz zaman kodunuzun size bir başka göründüğünü, baktığınızda mutlu olduğunuzu hissedeceksiniz. “Vay be şiir gibi kod yazdım” diyeceksiniz belki de. Başkaları da size yazdığınız karmaşık, düzensiz kod yüzünden küfür etmek yerine, size teşekkür edecektir.
Üstekiler benim şu bir kaç yıl içerisinde şahit olduğum durumlar ve sonuçların derlenmiş hali. Daha düzenli, okunaklı kod böyle böyle yazılır demektense bu tür şeyleri daha tecrübeli insanların anlattığı kaynaklardan okumamızın daha faydalı olacağı düşüncesindeyim.
Daha az satırdan oluşan kodun, daha zor anlaşılır ama daha efektif olan kodun çoğu zaman okunabilirliği/anlaşılabilirliği sorun olacağından, daha uzun olan veya daha az efektif kodun tercih edildiğini söylersem umarım durumun önemini vurgulamış olurum.
Faydalı olabilecek bir kaç yazı: (liste gün geçtikçe güncellenecektir)
-
https://www.godoro.com/Divisions/Ehil/Mecmua/Magazines/Columns/txt/html/article_ReadibleCode.html
-
https://www.cagataycebi.com/programming/java_programming/java_programming_4.pdf
İyi ve düzenli kodlamalar.