CLEAN CODE
Bu çalışma “Clean Code” kitabı kaynak alınarak hazırlanmaktadır. Daha anlaşılır, okunaklı kod geliştirme süreci için bir dizi kurallar içermektedir. Kitabın yazarı çalışmasını eşine adadığı gibi bende bu çalışmamı her durumda yanımda olan, yazdıklarımı paylaşma fırsatım olmadığı için benim yerime paylaşan Canım eşime adıyorum.
Bölüm 1
Anlamlı İsimlendirme
. İsimleri yazılımın her aşamasında kullanırız. Yazılım geliştirirken değişkenlerimizi, fonksiyonlarımızı, argüman ve classlarımızı isimlendiririz. Kaynak dosyalarımızı ve onların bulundurduğumuz klasörlerimizi de isimlendiririz.
. İsimlendirme her durumda karşımıza çıkacağı için kullandığımız bileşenleri isimlendirme de bazı kuralları takip etmemiz gerekir. Anlamlı ve iyi isimlendirme “clean code” ve daha iyi yazılım geliştirme açısından önemlidir.
Kullanım Amacına Uygun İsimler Kullanma
. Değişken isimlendirme ya da değişkene verilen ismim kullanım amacımı tam olarak ifade etmesi, basit bir konu gibi görülebilir. Ancak yazılım geliştirme, kod okuma gibi aşamalarda oldukça önemlidir. Kullanım amacına uygun isim seçme duruma göre zaman alabilir ama kod geliştirme sürecinin geneline baktığımızda zaman maliyeti açısından büyük fayda sağlar.
. Kullandığımız değişkenlerin, fonksiyonların vb. isimleri kontrol edip kullanım amacına daha iyi açıklayan isimlerle değiştirebiliriz. Bu başta bize ve yazdığımız kodu okuyan herkese fayda sağlar.
. Değişken, fonksiyon veya class isimleri önemli sorulara cevap vermelidir. Neden kullanıldığı, ne yaptığı ve nasıl kullanıldığı anlatmalıdır. Kullandığımız ya da seçtiğimiz isim yorum gerektiyorsa saydığımız kriterlere uymuyor demektir. Yorum yazmak yerine ismi daha anlaşılır, amacına uygun bir isimle değiştirme yoluna gidebiliriz.
Kodun ne yaptığını, ne için yazıldığını anlamak zor görünüyor. Aslında çok karmaşık ifadeler yok. Sadece üç değişken ve iki sabit ifade kullanılmış. Karışık bir class yapısı veya method içermiyor. Değişken ve sabitin yanında bir de array list kullanılmış. Buna rağmen kodu anlamakta zorlanıyoruz. Burada sorun kodun basit olup olmaması değil. Kullanılan değişken ve sabitlerin isimlerinin anlamlı olmaması ve kullanım amacını tam ifade etmemesi işimizi zorlaştırıyor.
. Bu kod örneğinde aşağıdaki soruların cevaplarını bulamıyoruz. Anlamlı isimler kullanılmış bir kod bloğunda bu tarz sorularla daha az karşılaşırız.
▪️ theList tam olarak neyi ifade ediyor?
▪️ theList elemanlarından sıfır indexinin önemi nedir?
▪️ 4 sayısının önemi ne ve ne için kullanılmış?
▪️ Geri döndürülen list1’in kullanım amacı tam olarak nedir?
. Kod örneği bu sorulara cevap vermediği için kodu okuyup yorumlayamıyoruz. Yorumlayamadığımız için üzerine geliştirme yapmamız oldukça zor. Bu basit kod örneğinde bile isimlendirmenin önemi net bir şekilde görülüyor. Daha karmaşık projelerde ve ekip çalışmalarında bu gibi durumlar yaşandığınızı düşünün.
. Verilen örneğin mayın arama oyunu düşünelim ve kodu ona göre güncelleyelim. Kullanılan isimleri daha anlamlı hale getirelim.
. theList burada içerisinde mayın bulunan bölümlerin, alanların listesini tutuyor. theList ismini gameBoard yaparak işe başlayalım.
Gameboard üzerindeki her alan array’le ifade ediliyor. Sıfır index’inin önemini buradan anlayabiliyoruz. Sıfır index’i her alanın o lokasyondaki durumunun değerini veriyor. 4 sayısı ile ilgili alanda mayın bulunduğu anlamına geliyor. Farklı bir sayı da kullanılabilir. Yani özetle sıfır index’i 4 olan alanlarda mayın var diyebiliriz. 4 sayısı yerine flagged isimli bir sabit kullanalım. Yaptığımız isim değişiklerinden sonra kodun yeni hali;
Bu isim değişikliklerinden sonra kod daha anlaşılır hale geldi. Buna anlaşılır isim seçmenin gücü diyelim.
. Devam edecek….