Yazılım dünyasında, bir işlemin kusursuz yapılması kadar, bazı eksikler çerçevesinde gerçekleştirildiği durumlar ile de sıklıkla karşılaşmak mümkün. Bu noktada işlem her ne kadar profesyonel bir şekilde gerçekleştirilmedi ise de, sonucu olumlu olduğu için arka plan pek de önemli olmaz. İşte clean code, yani temiz kod kavramı da tam bu değerlendirme üzerine çıkmıştır. Biz de bu içeriğimizde size kod yazımının prensiplerinden olan clean code (temiz kod) kavramından bahsedeceğiz ve temel dinamiklerinden söz edeceğiz.
Yazılacak olan kod hatasız, kolay anlaşılabilir, düzenlenebilir, daraltılabilir ya da genişletilebilir halde ise, bu koda clean code adı verilir. Clean code nedir? sorusuna en kısa bu şekilde cevap verilebilir. Tabi ki tüm değerlendirmeden birkaç cümle ile söz etmek mümkün değil. Genel anlamda kavram hakkında önemli bilgiler aşağıdaki gibidir.
- Basit düşünüp, basit uygulanmalıdır. Karmaşadan kaçınmak, kavramın en önemli özelliğidir.
- Kendinizi veya kendinizden sonra kodu düzenleyecek kişileri düşünerek, kolay düzenlenebilir bir şekilde kod yazılmalıdır.
- Kavram, Robert Cecil Martin tarafından yazılmış “Clean Code” kitabı ile ilişkilendirilmiş ve oradan ortaya çıkmıştır.
Kavramın dinamikleri çok basit ve yazılım dünyasında epey öneme sahip. Kolay anlaşılabilir kod yazımındaki hataların bertaraf edilmesi, daha kolay düzenlenebilir kodların yazılması adına ortaya atılmış bir kavram. Bu nedenle son derece önemli ve düzenli çalışmanın gereği konumunda.
Clean Code Nasıl Yazılır?
Kodun kolay anlaşılabilir olması gerekir. Temel dinamik budur. Bununla beraber kavram içerisinde yer alabilecek bir kod olması için, sadece kodu yazan kişi değil, daha sonra kodu okuyan ve düzenleyecek olan bir başka kişi için de kodun kolayca anlaşılabilir olması gerekir. Böyle olmaması durumunda “Bad Code” (Kötü Kod) kavramı ile karşılaşılmış olur. Kodun kötü olması, insani bir vasıf yüklenmesinden kaynaklanamayacağı için, kolay anlaşılabilir bir kod olmadığı dikkat çeker. Diğer önemli etkenler ise aşağıdaki gibidir.
- Basit olmalı, basit yazmalı ve basit okumalısınız.
- Sizden sonra kod ile uğraşacak kişiler için daha sade bir ortam bırakmalısınız.
- Hatalardan ve eksiklerden arındırmalısınız. Hatasız çalışıyor olması, onun kötü kod, yani bad code olduğu gerçeğini değiştirmez.
- Karmaşık kodlar ile okunabilirliği düşürmeyin. Daha basit kod stilleri deneyin.
- Polymorphism kullanarak pek çok farklı yapı ile esneklik kurmalısınız.
- Dependency İnjection (Bağımlılık Enjeksiyonu) kullanmaya özen gösterin. Böylece kod tüm bağımlılıklardan kurtulur, bağımsız bir şekilde düzenlenebilir.
- Kullandığınız değişken, function/method, class isimleri net ve açıklayıcı olması gerekir. Buna özen göstermelisiniz.
- Adlandırmaları doğru yapmalısınız. Daha sonra kolay arama yapılabilmesi çok önemlidir.
- Kullandığınız fonksiyonlar birden fazla işlem yapmamalı. Sadece kendi işini yapan fonksiyonlar kodlamalısınız.
- Side Effect (Yan Etki) içeren fonksiyonlardan kaçınmalısınız.
- Gereği olmayan yorum satırları kullanmamalısınız ve yorum satırlarınız açıklayıcı olmalı.
- Fonksiyonların akış yönü aşağı doğru olmalı ve girintileri bozmamalıdır.
- Statik olmayan yöntemleri kullanmaya özen gösterin.
Yukarıda da görüldüğü üzere, temiz bir kod yani clean code oluşturulması için yukarıdaki dinamiklere dikkat edilmelidir. Tabi ki tüm bu dinamiklerin uygulanması kodu yazan ve okuyan kişi ile ilgili olacaktır. Bu nedenle daima basit olmaya ve basit okumaya özen göstermelisiniz.
Bad Code (Kötü Kod) Nedir?
Kodu yazan kişi ve kod yazılan zaman söz konusu olduğunda; zaman, yanlış sistem, yönetimsel hatalar gibi konular göz önünde bulundurularak, kötü kodlar ortaya çıkabilir. Bu kapsamda, clean code kriterlerine uymayan, doğru ve işlevsel olmayan kodlara, bad code (kötü kod) adı verilir. Peki, bad code nasıl anlaşılır?
- Zor okunuyor ve anlaşılıyorsa,
- Değişiklik yapmak neredeyse imkansız bir hal aldıysa,
- Çok fazla gereksiz kod var ve bu şekilde kodlar zor okunuyorsa, kötü kod ile karşı karşıya kalmışsınız diyebiliriz.
Peki, gerçekten bad code diye bir kavram var mı? Bu kavramın kullanıldığı yazınlara rastlamak zor değil. Ancak böyle bir kavramın kullanılmaması gerektiği ile ilgili yazınlar da mevcut. Bunun nedeni ise, kötü kodun herkes için farklı çağrışımlar oluşturabileceğidir. Bu sebeple kötü kod kavramının kullanılmaması önerilir.
Robert Cecil Martin’in klasikleşmiş hale gelen “Clean Code” kitabında bu kavrama rastlayabiliyoruz. Kitapta, kötü kodun bile çalışabildiğine yönelik metin var. Yani bad code kavramı geçiyor. Ancak bu konuda hali hazırda zıtlaşmaların olduğunu da söylemek çok zor olmasa gerek. “This code is bad. We should refactor it. (Bu kod kötü. Onu yeniden düzenlemelisiniz)” kavramı ile de çok sık karşılaştığımızı düşünürsek, böyle bir kavramın olduğu ve literatürde yer alması gerektiği çok açık. Peki, kod kokar mı? Gelin bunu inceleyelim.
Code Smells (Kötü Kokan Kod) Nedir?
Türkçe’de mecaz, yani gerçek olmayan anlam ile daha iyi bir anlatım yapmak mümkün. Öyle ki, bu durum Türkçe’mizi oldukça geliştirmiş ve anlatımı da kuvvetlendirmiş. İşte code smells, yani kodun kötü kokması da buna bir örnek. Mecaz, ama harika bir anlatım. Peki, code smells nedir?
Yazılan kodda anlaşılmayan yerler varsa, gereksiz kodlar yapılmış, tekrar edilmişse, anlatılmak istenen şey uzatıldıkça uzatılmış ve okunduğunda hiçbir şey anlaşılmıyorsa, burnunuza kötü kokular geliyordur. Evet, bu kod artık kötü kokan bir kod, yani code smells. Tabi ki burada farklı dinamikler de var. Bunlara ayrıca dikkat etmek gerekiyor.
Kötü Kokan Kod (Code Smells) Nasıl Anlaşılır?
Fonksiyonunu tam anlamı ile gerçekleştirse bile bunu uzun uzun, anlaşılmaz bir şekilde gerçekleştiren kodlar kötü kokan kod sınıfında yer alır. Bunun için ön planda olan kavramlar da aşağıdaki gibi sıralanabilir.
- Inactivity (Hareketsizlik): Tekrar eden bölümler varsa ve bu kod yapısını kopyala yapıştır olarak kullanabiliyorsanız geçerlidir.
- Obscurity (Belirsizlik): Anlaşılmaz ve okunması zor bir kod ise bu kavram dikkat çeker.
- Rigidity (Bölünmezlik): Değiştirilemiyor, değiştirilse bile pek çok yer etkileniyorsa geçerli olacaktır.
- Tautology (Gereksiz Tekrar): Çok basit bir anlatım gerekli iken, bu durum uzun uzun kodlar ile anlatılıyorsa ön planda olur.
Yukarıdaki kavramlar ve açıklamalarını dikkatli bir şekilde incelediğinizde, code smells, yani kötü kokan kodu rahatlıkla anlayabilirsiniz.
Sizin için bu içeriğimizde Clean code (temiz kod) nedir? Clean code nasıl yazılır? Bad code (kötü kod) nedir? Code smells (kötü kokan kod) nedir? gibi pek çok soruyu cevaplandırdık ve detaylı bir şekilde açıkladık. Siz de görüş ve önerilerinizi yorum kısmından belirterek, içeriğimize katkıda bulunabilirsiniz.
Sık Sorulan Sorular
Yazılan kod, yazan ve okuyan kişi tarafından rahatlıkla okunabiliyor ve anlaşılabiliyorsa, readability code olarak ifade edilir.
Bu prensibe göre, seviyesi yüksek olan modüllerin, seviyesi düşük olan modüllere bağlı olmaması gerekir. Her iki modülün bağlı olması gereken yer, soyutlama olmalıdır.
Kodu yazan kişinin, fazla kod tekrarı yaparak, yazılan tüm kodları ve sonucu düzenlenemez bir hale getirmesidir. Code duplication yapıldığında, yazılımın tamamının değerlendirilmesi, düzenlenmesi ve bakımının yapılması gerekir.