Clean Code Nedir?

Gözde Öztekin
inventiv
Published in
3 min readMar 28, 2022

Yazılım geliştirirken, hepimizin yaşadığı işin acil olması, kalifiye eksikliği vb. sebepler yüzünden yazılan kodun kalitesine genelde dikkat edilmemektedir.
“Gereken işi yapsın yeter” mantığında yazılan kodlar zaman geçtikçe bir sorun haline gelmektedir. Kötü yazılmış bir kod üzerine geliştirme yapmak zorlaşır. Eğer bu kod refactor edilmezse gittikçe büyüyerek kodun anlaşılırlığını da güçleştirir. Bu gibi durumlardaki kodlar code smell (kötü kokan kod)olarak tanımlanır. İşin içine girince gerçekten kodun kalitesinin düşük olduğunu farkedilir.

İşte tam bu noktada devreye clean code anlayışı girer. Clean code(Temiz kod), gelişime ve değişime açık, kolay anlaşılabilir, bakımı kolay olan kod olarak tanımlanmaktadır. Clean code uygulanarak yazılan kodların hem anlaşılması hem de geliştirilmesi kolay olur.

Yukarıdaki resimde de görüldüğü gibi kötü kokan kodlarda yazılımcı yolunu kaybedebilir. Bu durum kod üstünde geliştirme yada değişiklik yapılması gerektiğinde yapılacak işin maliyetini arttırır. Bundan sakınmak için kodumuzu düzgün yazmalı yada önceden yazılmış kodları refactor etmeliyiz.

Aşağıda kodumuzun temiz olması için neler yapılabilir onlardan bahsedeceğim.

  • Aynı işi yapan kodları birleştirip metot haline getirerek kod tekrarından kaçınılmalıdır.
  • Farklı isimlendirilmiş aynı işlevli fonksiyonları kaldırarak ekstra kaynak kaybına engel olunmalıdır.
  • Her fonksiyonun tek işlevi olmalıdır. Fonksiyon isminde işlevi belirtilerek o işlevin dışına çıkılmaması gerekmektedir. Birden fazla işlevi olan fonksiyon bölünmelidir. Bu hem okunurluk açısından hem de başkası o işlevi kullanması gerektiğinde kod tekrarı olmaması açısından önemlidir.
  • Overload olan fonksiyonları yada benzer işlev içeren fonksiyonları alt alta olacak şekilde yazılmalıdır. Bu durum okunurluğu kolaylaştırır.
  • If bloklarına parantez ekleyerek kodun okunurluğunu arttırın.
  • Yorum satırlarını sınırlayın, gerçekten anlaşılması güç olan yerlere eklenmelidir.
  • Karmaşık olan kodları refactor etmeye çalışılmaldır. Eğer refactor edilemiyorsa yeniden yazma maliyetini değerlendirilmelidir.
  • Yeni geliştirme yapacağınız kod temiz değilse önce refactor yapmaya özen gösterilmelidir. Kötü yazılmış kod üzerine yeni kodlar eklenerek kodun kalitesi ve anlaşılırlığı düşer.
  • Refactor için özel olarak zaman ayrılmalıdır.
  • Kodunuzu düzenlerken mutlaka test edimelidir. Testler kod yazımında çok önemlidir. Bir geliştirme gerektiğinde yaptığımız yeni özellik kodun işleyişini bozuyorsa testlerden bunu yakalayabiliriz.
  • Sınıfları belirleme kodun okunurluğu açısından önemlidir. Aynı uzantılı dosyaları klasörlere ayrılmalıdır. Örn: js, html uzantılar kendine ait klasörde olmalıdır.
  • Zombie kod olarak adlandırılan yorum satırında kalmış olan kodlardan kaçınılmalıdır.
  • Statik olarak gömülü olan kodlardan kaçının. Statik değer değişmesi gerektiğinde her yerde aratıp değiştirmek maliyetli olacaktır. Bu sebeple enum tipi kullanılmalıdır.
  • If bloğu bir mantığa uygun birden fazla koşul içeriyorsa o mantığı bir metot haline getirip if içinde kullanılmalıdır. Örn;if(uzanti==”jpg” || uzanti ==”png” || uzanti== “tiff” || uzanti ==”bmp”) yerine resim formatlarını içeren bir metot yazılıp if(IsPictureFormat(uzanti)) şeklinde kullanılabilir.
  • Null kontrol durumlarında kodu kısaltmak için ?? operatörleri kullanılmalıdır.
  • Değişken tanımlarını life time en kısa süre olacak şekilde kullanıldığı yerde yapmalıyız.
  • Negatif koşulla if yazmak yerine pozitif koşulla yazılması kafa karışıklığını azaltacaktır.
  • Object yerine primitive türleri kullanılmalıdır. Örn; var yas=1 yerine int yas=1
  • İçindeki kod bloğu tek satır olan metotları okunurluk açısından => operatörünü kullanarak tek satırda yazılmalıdır.

İsimlendirmeler kodun okunurluğu açısından çok önemlidir. İsimlendirmede önemli birkaç kuraldan bahsetmek istiyorum;

  1. Metotlar işlev içerir ve bu işlevi tanımlamak için metot isimleri fiil olarak verilmelidir. Örn; SendMessage, GetDetail
  2. Class isimleri fiil olmaz isim alır. Üzerinden nesne üretildiğinde anlaşılır olması gerekmektedir. Örn; Invoice, Provision
  3. Boolean değişkenlerin ismi daha anlaşılır olması açısından soru şeklinde olmalıdır. Örn; IsPassive, IsDeleted
  4. İsimlendirmeler açıklayıcı ve kısa olmalıdır.

Bu yöntemleri uygulayarak kodumuzu düzenli ve temiz tutabilir, maliyetini azaltabiliriz.

https://www.turkhackteam.org/konular/temiz-kod-yazmak.1185786/

--

--