Temiz Kod Nedir ve Önemi

Turgutefe Akşit
6 min readApr 23, 2021

Herkes bilgisayarın anlayacağı şekilde kod yazabilir ama sadece iyi programcılar insanların anlayabileceği şekilde kod yazar (Martin Fowler) Sözü ile başlamak istiyorum.

Kod yazmak için bir dil öğrenmek her ne kadar önemli ve gerekli ise kodu okunaklı ve anlaşılır bir şekilde yazmakta o kadar önemlidir.

Eğer kod karmaşık ve okunaksız bir şekilde yazılmışsa ileride büyük problemler ortaya çıkarır. Okunaksız olarak kodlanmış bir projenin olası bir hata sonrası yapılacak olan bakımı çok zordur. Sonradan projeye dahil olan yazılımcıların işe koyulması için önce kodu anlaması gerekir, eğer kod karmaşık ve düzensiz olarak yazılmışsa kodu anlama aşaması hem çok zor olur hem de gereğinden fazla vakit yer.

Kısaca kodlar düz yazı gibi açık ve sade bir biçimde yazılmalıdır.

Kodun düzenli ve okunaklı yazılması için gereken bazı adımlar vardır. Bunlara değinecek olursak;

1. İsimlendirme Sanatı

Programlamada dosyalar, değişkenler, fonksiyonlar, argümanlar, paketler gibi birçok yapıya isim verilir. Bu isimlerin doğru ve düzenli olarak yapılması kodun sadeliği ve okuna bilirliği açısından oldukça önemlidir.

İsimler verilirken soyut ve genel isimler yerine ayrıntılı ve özelleşmiş isimler kullanmak dışarıdan bakan bir programcının kodu anlamasını kolaylaştırır.

Örneğin:

Gibi bir kullanım durumunda ilerideki süreçlerde çok büyük sıkıntılar ortaya çıkabilir.

Bunun yerine;

Gibi bir değişken adı kullanımı yapılırsa dışarıdan bakan bir göz neyin en olduğunu açık bir şekilde algılar. Geri dönüş yapılması gereken durumlarda kod daha rahat analiz edilir.

Gibi bir değişken adı kullanımı yapılırsa dışarıdan bakan bir göz neyin en olduğunu açık bir şekilde algılar. Geri dönüş yapılması gereken durumlarda kod daha rahat analiz edilir.

2. Koşulların Kullanımı

Koşul durumları gerektiğinde kod olabildiğince sade, doğal ve açıklayıcı bir şekilde yazılmalıdır. Kontrollerin kodu oradan oraya sürükleyişi karmaşık bir dille yazılırsa okunması kolay olmayan bu fonksiyonları daha da kompleks bir hale sokar. Kodun tekrar tekrar okunma gereği duyulmayacak şekilde yazılması gerekir.

· Argüman sırası ve kullanımı:

İf else içerisinde verilen bilgilerin kontrolünde negatif durumlar yerine pozitif durumları tercih ederiz ve basitten zora doğru bir gönderim yaparız, bu durumlar okunabilirliği arttırır. Örneğin kalan para 10 birimden küçük değil ise yerine kalan para 10 birime büyük veya eşitse deriz.

· İf Else Kullanımı:

Yukarıdaki resimlerde ilk resim yerine ikinci resimdeki gibi olumlu ifadeler kullanmak daha uydundur.

İf else kontrollerinin iç içe kullanım durumlarını en aza indirgememiz ve fonksiyondan erken döndürmemiz daha iyi bir durumdur.

Örnek1:

Resimdeki gibi bir kullanım durumunda aslında bizden a’nın ve c’nin b’ye eşit olmadığı durumlar için işlemler yapmamız bekleniyor. Bunu iç içe if blokları yerine daha kolay bir şekilde de yazabiliriz.

Örnek2:

Kullanımı örnek 1’deki kullanımdan daha sade ve basittir.

· Goto Fonksiyonu:

Goto fonksiyonu genel olarak kullanılmayan kodu gereksiz derecede karmaşıklaştırılan bir fonksiyondur. Goto fonksiyonu gerine bir while if kontrolü kurmak kodu daha okunaklı yapar.

Örnek3:

Örnek4:

Örnek3’deki ifade yerine örnek4’deki ifade daha okunaklıdır.

· Kısa Devre Mantığı:

Birçok dilde bu mantık kullanımı vardır. ( | ) ifadesi yada demektir, ( & ) ifadesi ise ve demektir. Eğer bu ifadeler ( || ) ve ( && ) şeklinde kullanılırsa, ( a || b) ifadesinde a doğruysa b ifadesine bakılmaksızın ifade doğru kabul edilir. ( a && b ) ifadesinde a yanlış ise b ifadesine bakılmaksızın ifade yanlış kabul edilir. Bazı durumlarda bu ifadeler karmaşık hale gelebilir.

Örneğin;

3. Döngü Kullanımı

· Do While Döngüsü:

Do while döngüsü önce yap sonra koşulu kontrol et prensibi ile kafa karışıklıklarına yol açabilen bir fonksiyondur, mümkün olduğunca kullanılmamalıdır. Bu döngü fonksiyonu yerine while veya for fonksiyonunu kullanmak kodu daha da sadeleştirir.

4. Fonksiyonlar

Fonksiyonlar sadece isimlendirildiği işi yerine getirmelilerdir. Bir fonksiyon birden fazla iş yapıyorsa o fonksiyon kodu karma karışık hale getire bilir. 2 farklı iş yapılması gerekiyorsa bu iş 2 fonksiyona bölünerek yapılmalıdır. Fonksiyonlar oldukça kısa olmalıdır.

Fonksiyon isimlendirmeleri oldukça önemlidir. Fonksiyon isimlendirirken uzun isimler vermekten kaçınılmamalıdır tam tersine uzun açıklayıcı isimler kullanmak çok faydalı olacaktır.

Örneğin:

Fonksiyonu olması gerektiği gibi kısa sade ve sadece isminin gerekliliğini yerine getiren bir fonksiyondur.

Başka bir örnek vermek gerekirse;

Fonksiyonunda her ne kadar iş doğru yapılsa bile fonksiyon iki iş yapmaktadır. Bunun yerine maksimum değeri bulan ve kare alan 2 farklı fonksiyon yazılması daha doğru olur.

5. Yorum Satırı Kullanımı

Yorum satırları kod üzerinde yapılan bir işlemin tam olarak açık olmamasından kaynaklı eksiklikleri gidermek amacıyla kullanılır. Yani yorum satırı kullanmak yerine kodlarımızı daha açık bir dille yazmamız gerekir. Kod üzerinde yorum satırı ekleme ihtiyacı duyuyorsak kod üzerinde açık olmayan ifadeler vardır ve bu ifadeleri yorum satırı eklemek yerine kodu düzenleyerek açığa kavuşturmamız daha faydalıdır.

Örnek5:

Örnek6:

Örnek 5 de program örnek 6 ya göre daha karmaşıktır. Örnek 6 da ki gibi daha anlaşılır ve basit bir dille yorum satırına ihtiyaç duymadan kodu yazmak daha kullanışlı ve okunaklıdır.

Yasal zorunluluklardan kaynaklı telif hakkı ve yazarlık durumlarında yorum satırı kullanımı gerekebilir.

Genel Örnekler

Yukarıda temiz bir kod yazmak için incelemiş olduğumuz maddeleri kullanarak örnek değerlendirmeleri yapacak olursak;

Genel Örnek1:

Kullanıcıdan alınan bir sayının öncelikle negatif olup olmadığına bakılıyor. Girilen sayı negatif ise sayının 0’dan küçük olamayacağı belirtilip hata veriliyor. Eğer sayı negatif değil ise kullanıcıdan alınan sayının faktöriyeli alınıyor. Bulunan sayı ekrana yazılıyor.

Genel örnek 1 de ilk dikkatimi çeken şey çok fazla yorum satırı olması oldu. Kodun açık olarak anlaşılan yerlerine bile yorum satırı konulmuş ve okunabilirliği azaltılmış.

İkinci olarak j değişkenini sayac olarak isimlendirmek daha doğru ve açıklayıcı olurdu.

Genel Örnek2:

Bu kod 0 ve 1 den başlatan fibonacci dizisinin kullanıcıdan alınan sıradaki elmanı hesaplayıp ekrana yazdıran bir algoritmadır.

Kodda kullanılan do while okunabilirliği zorlaştırmaktadır, bu fonksiyon yerine for döngüsü kullanımı daha uygundur. “c” olarak adlandırılmış değişken sayaç görevinde kullanılmıştır, c yerine sayac olarak isimlendirilmesi daha doğrudur. “d” olarak adlandırışmış olan değişken aslında işlemlerin sonucunu ifade etmektedir, bu yüzden sonuc olarak isimlendirilmesi daha doğrudur. Kodda gereksiz yorum satırları vardır, bu satırlar okuna bilirliği azaltmaktadır.

Bu kodun daha sade ve okunabilir hali şu şekildedir;

Genel Örnek3:

Kaynaklar:

· https://ufukuzun.wordpress.com/category/clean-code/

· Doç. Dr. Deniz Kılınç, Bakırçay Üniversitesi 7. Hafta Ders Notları

--

--

Turgutefe Akşit

I am a computer engineering student at Izmir Bakırçay University.