Temiz ve Kaliteli Kod Nasıl Yazılır? ya da Temiz ve Kaliteli Kodun Temel İlkeleri
Bugünlerde temiz ve kaliteli kod yazma üzerine düşünmekteyim. (Aslında temiz ve kaliteli kelimelerini bundan sonra birbiri yerine geçecek şekilde kullanacağımı şimdiden belirteyim.) Bu konuda her zaman düşünüp, bildiklerimi ve çıkarımlarımı paylaşıyorum ama bu sefer daha formal bir çalışma yapıp, düşündüklerimi bir çerçeveye oturma ihtiyacı doğdu. Bu çalışmayı her ne kadar Java tabanında yapacak olsam da hemen her türlü programlama diliyle uğraşanları ilgilendirecek şeylerden bahsedeceğim. Örneğin bu çalışma C gibi prosedürel dillerle uğraşanlara faydalı olacağı gibi, C++, C# vb. nesne-merkezli dillerle uğraşan kişiler kesinlikle çok daha fazla fayda edineceklerdir. Açıkçası bu çalışmanın Java ile alakası, çoğu zaman sadece örnekler seviyesinde olacaktır.
“Temiz ve Kaliteli Kod Nasıl Yazılır” ile ilgili süreçte ilk olarak bir önceki yazıda “JavaTürk Java Kod İsimlendirme ve Şekil (Format) Standardı“nı yayınladım.
Temiz ve kaliteli kod yazmak, isimlendirme ve şekil standartlarına uymakla başlar belki ama bundan çok daha fazlasıdır. İsimlendirme ve şekil standartları, kaliteli kod için “şekil” yönünden gereklilik olabilir. Ama içerik olarak kaliteli kod yazmaya odaklanmak, şekil standartlarından daha önemlidir. Zira, içerik açısından kalite aslen pek çok defa dilden bağımsız, en az bir dil ailesine, çoğu zaman da her türlü programlama faaliyetine uygulanabilecek evrensel prensiplerden oluşur.
Ben hem şekil hem de içerik açısından kendimce bir çerçeve (framework) kurguladım. Bu çerçeveyi Java özelinde kurgulamama rağmen hemen her prensibi nesne-merkezli dillere, örneğin C++, C#, hatta pek nesne-merkezli olmayan dillere bile uygulanabilir. Bu çerceve aşağıdaki çizimde kısaca ifade edilmiştir:
Yukarıdaki çizimden de anlaşılacaği gibi oluşturduğum çerçeveye göre kaliteli kodun dört sıfatı ya da özelliği vardır:
- Basit. Kaliteli kod her şeyden önce basittir, olabileceklerin en basitidir. Dolayısıyla daima “en basiti bu mudur?” diye sor kendine.
- Odaklı. Her yazılan kod parçasının sadece ve sadece tek bir amacı olsun. Birden fazla amacı hiç bir yerde bir araya getirme.
- Tam. Ne eksik ne fazla, sadece ihtiyaç için kod yaz, başka hiç bir şey yazma. İhtiyaçla ilgili ne varsa yaz, ilgisiz olan hiç bir şeyi yazma.
- Güvenilir. Sadece normal durumları değil, anormal durumları da düşün. Hatalı halleri görmezden gelme.
Bu yazıda bu dört özelliği bir başka deyişle dört ilkeyi hızlıca özetleyip sonraki yazılarda her birini tek tek ele alacağım:
Basit kod en temelde anlaşılır koddur. Basit kod, hem şekil hem de içerik açısından rahat anlaşılır, gözü ve zihni yormaz. Bu anlamda basit olmanın şekil şartı isimlendirme ve şekil standartlarına uymaktır. Öte taraftan basit kod elde etmek için içerik olarak da basit kod yazmak gereklidir. Bu da hem odaklı hem de kısa kod yazmakla gerçekleşir.
Odaklı kod, hem basit kodun bileşenidir hem de kendi başına ozelliklere sahip olduğundan apayrı bri şekilde ele alınması gereken bir ilkedir. Odaklı olmanın iki yüzü vardır: Bir yerde sadece bir şeyi halletmek, bir şeyi sadece bir yerde halletmek.
Tam kod, ne eksik ne fazla, sadece istenilenin yapıldığı, istenilen, beklenen, ihtiyaç duyulan dışında hiç bir fazla ya da eksik bir şeyin yapılmadığı koddur.
Güvenilir kod ise sadece olması gerekeni yapmaz. Güvenilir kod olması gerekn yanında olmaması gerekenin olmayacağından emin olur, olabilecek olanları da göz önüne alır. Bu anlamda güvenilir kod, bir ihtiyacı her yönüyle halleder.
Güzel kod ya da şiir gibi kod yazabilecek kadar iyi programcı olabilmek dileğiyle…
Toplam görüntülenme sayısı: 3764
Selman Gün
04 Nisan 2014 @ 13:31
Son derece faydalı ve “odaklanmış” bir yazı. Teşekkürler.
Akin
04 Nisan 2014 @ 14:57
Eyvallah, teskekurler. Devami var 🙂
Taner
14 Nisan 2014 @ 07:05
Çok güzel ve faydalı bir yazı.
Sanki “Basit” ve “Güvenilir” arasında bir trade-off var gibi geliyor. Yani tam anlamda taban tabana zıt olmasa da sanki bir yerden sonra artık bir tercih yapmak gerekiyor.
Serinin devamını dört gözle bekliyorum 🙂
Teşekkürler.
Akin
14 Nisan 2014 @ 13:09
Eyvallah, tesekkru ederim. Isin acikcasi bu konulari tartismak zor. Dediginiz tipten tarde offlar yanidna ortusen noktalar, zitliklar vs cok fazla var. Aslidna herseyi “basit” diye de aciklayabiliriz. Kisa olmasi basit olmasinin bir alt cuzu aslinda. Ama bu durumda analsilamsi zor bir yaklasim olurdu. Ben de dusunmeye devam ediyorum acikcasi. Okuyorum da, cunku benzer pek cok yakalsim var bu konulara. Serinin devamini ben de dort gozle bekliyorum acikcasi 🙂
Musa
26 Nisan 2014 @ 19:56
Teşekkürler.