Software Design Principles (Part 1)
Temelde yazılım mühendisliği, web uygulama geliştirme, mobil uygulama geliştirme, web sitesi tasarlama gibi alanlarda kullanılan sistemli ve yapısal bir yaklaşım olarak adlandırılır. Hepimizin bildiği gibi yazılım sektöründe kabul gören, etkili ve kaliteli yazılım geliştirmek için takip edilmesi gereken bazı prensipler vardır. Bu yazıda bu prensiplerin neler olduğundan detaylı bir şekilde bahsetmeye çalışacağız.
En popüler olan prensipler genelde hepimizin kulağının bir yerlerden aşina olduğu KISS (Keep It Simple Stupid), YAGNI (You Aren’t Gonna Need It), DRY (Dont Repeat Yourself) ve SOLID prensipleridir. Bunların dışında yine çokça isimlerini duyduğumuz Cohesion, Coupling, Seperation of Concerns gibi prensiplere de ilerideki yazılarda sırasıyla değiniyor olacağız. Bu prensipler, geliştiricilerin daha kaliteli ürünler oluşturması için temel oluşturur. Hadi hazırsak başlayalım..
DRY (Don’t Repeat Yourself)
Kodun proje içerisinde bir çok noktada tekrar ediliyor olması şüphesizdir ki projenin bakımını zorlaştırır. Mantıksal herhangi bir değişiklik, kodun hatalara duyarlı olmasına veya kod değişikliğini zorlaştırmasına neden olabilir. Bu problem, ilgili mantıksal kod parçasının fonksiyonlar ve sınıflar oluşturularak yalnızca sorumlu olunan yerde yazılması ve gereken noktalarda yeniden kullanılmasıyla gerçekleştirilir.
KISS (Keep It Simple Stupid)
KISS prensibi, sistemin karmaşık hale getirilmesinden ziyade basit tutulması durumunda daha iyi çalıştığını belirtir. Bu nedenle, tasarımda basitlik ana hedef olmalı ve gereksiz karmaşıklıktan kaçınılmalıdır.
Simple kodun şu faydaları vardır:
- Kodu yazmak daha az zaman alır.
- Hata ile karşılaşma olasılığı azalır.
- Daha kolay anlaşılabilir, hata ayıklanabilir ve değiştirilebilirdir.
Temiz ve basit düşünülerek yazılan kod, üzerinde fazla düşünmeden kolayca okunabilir ve anlaşılabilir olmalıdır. Eğer öyle değilse, her zaman daha fazla basitleştirilme olasılığı vardır. Buradaki motto mümkün olan en basit şeyi yapmaktır.
YAGNI (You Aren’t Gonna Need It)
Buna İhtiyacın Olmayacak 🙂
Bir şeye ilerde ihtiyaç duyulabileceğini öngördüğünüzde değil ona gerçekten ihtiyaç duyduğunuz zamanda geliştirmesini yapın.
Bu prensibe göre bu özelliğe kesinlikle ihtiyacınız olacağına emin olsanız bile, onu hemen şimdi uygulamamalısınız. Çünkü şöyle bir sonuçla karşılaşmanız muhtemeldir:
- İlerde hiç ihtiyacınız olmayabilir.
- Gerçekte ihtiyacınız olan şey, önceden tahmin ettiğinizden daha farklı bir şekilde olabilir.
Yalnız bu prensiple verilmek istenen mesaj kesinlikle kodunuza esneklik eklemekten kaçınmanız gerektiği değildir. Tam tersi bu olması gereken bir durumdur. Ancak burada çok ileri giderek gelecekte ihtiyacınız olabileceği varsayımlarına dayanarak over engineering yapmamalısınız.
YAGNI uygulamanın iki temel sebebi vardır:
- Kod yazmak için zaman kazanırsınız çünkü ihtiyacınızın olmadığı kodu yazmaktan kaçınırsınız.
- Kodunuz daha iyi durumda olur. Çünkü ‘tahminlerle’ gereksiz bir şekilde karmaşıklaşmasını önlersiniz. Ve ilerde yanlış varsayım olduğu ortaya çıkan ancak yine bir şekilde varlığını sürdüren o ‘tahminlerle’ kodunuzu kirletmezsiniz.
Boy-Scout Rule
Bir geliştirici kodun olması gerektiği kadar temiz ve anlaşılır olmadığını gördüğünde, hemen oracıkta düzeltme fırsatını kaçırmamalıdır 🙂 Evet bu bir krizi fırsata dönüştürme anıdır :)
Bu refactoring kuralı, Uncle Bob’un da yazılımcılara tavsiye ettiği gibi “Kodu ilk bulduğunuz durumdan daha iyi bir durumda bırakmak” prensibine dayanır. Tam tersi düzeltme yoluna gitmeden üstüne geliştirme yapıp etliye sütlüye karışmadığınız her senaryoda kod kalitesi giderek düşer ve bu da zamanla “technical debt” dediğimiz baş ağrıtan bir borçluluk durumuna neden olur.
Code for the Maintainer
Kod bakımı maliyetli ve zor bir süreçtir. Her zaman kodun bakımını yapacak kişinin bir başkası olduğunu düşünerek kod yazın. Bakımını yapacak kişi siz olsanız bile bir süre sonra kodu neredeyse bir yabancı kadar hatırlayacaksınız.
Her zaman kodun bakımını üstlenecek kişinin, sizi nerede bulabileceğini bilen bir psikopat olduğunu düşünerek kodunuzu yazın derler 🙂
Evet giriş yazımızın sonuna geldik. Yazıyı faydalı bulduysanız Part2'de kaldığımız yerden devam edeceğiz..
Kodla kalın!