Clean Code içinde bahsedeceğimiz bir diğer konu ise "High Cohesion Low Coupling" yani "Yüksek Birliktelik ve Düşük Bağımlılık"'tır. &O...
Clean Code: YAGNI Prensibi
Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip YAGNI(You Ain’t Gonna Need It)'dir. Bu prensip genel anlamda vurguladığı şey: İhtiyacımız olmayan şeylerin sisteme dahil olmaması gerektiğidir. YAGNI bize yazdığımız kodda sadece gerekli şeylerin olmasını söyler. Aynı zamanda kodumuzda daha sonra bir özelliğe veya kod parçasına ihtiyacınız olacağından tamamen emin olsanız bile bunu hemen uygulamayın. Yani ileride bu da lazım olacak diyerek bir işe kalkışmayın. Büyük olasılıkla, buna ihtiyacınız olmayacak veya gerçekte ihtiyacınız olan şey, daha önce ihtiyaç duyduğunuz ve öngördüğünüzden oldukça farklı olacaktır. Bunun yanında mevcut zamanınızdan harcayacaksınız. Bu da o günkü performansınızı etkileyecek.
Ayrıca buna rağmen yaptığınızda ise belli zamanda sonra orada o şeye ihtiyaç olduğunda tekrar mevcut kodunuzu okumanız incelemeniz gerekecek. Muhtemeldir ki yeni yapacak olduğunuz eskisinden farklı olacak. Bu durumda da sizin ilerisini düşünüp yazdığınız kod bir bakıma boşa gidecek ve bununla kalmayıp daha da zamanınızın boşa gitmesine sebep olacaktır. Sonuçta o kodu yazmak içinde analiz, dest, dokümantasyon gibi farklı alanlarla çaba sarf ediyoruz. Bu gibi o an ihtiyacımız olmayan ama bizim ilerisi için iyi sandığımız ama kötü durum yazılımda teknik borç olarak bilinir. İlk başta fark edilmese de ilerleyen zamanda bu teknik borç artarak devam eder. Sonunda da size geri dönüşü olur. İnsanların varsayımsal özellikler oluşturmasının yaygın nedeni, daha sonra inşa etmektense şimdi inşa etmenin daha ucuz olacağını düşünmeleridir. En büyük hatayı burada yapmaktayız! Şimdi iyilik yaptığınızı düşünüp ilerisi için en büyük kötülüğü yapmış olursunuz.
YAGNI günümüz deyimi ile anı yaşamamızı ister. İlerisi için çok fazla bir şey yapmamamız gerektiğini söyler.
Kodunuzu yazarken buna gerçekten ihtiyacım olacak mı? diye sormalıyız. Cevabınız basitçe Evet cevabından farklı ise, hayır buna ihtiyacınız kesinlikle olmayacak. İhtiyacımız olmayan şeylerden kurtulun! YAGNI yalnızca kodun değiştirilmesi kolaysa uygulanabilir bir stratejidir, bu nedenle yeniden düzenleme için çaba harcamak YAGNI'yi ihlal etmez çünkü yeniden düzenleme kodu daha yumuşak hale getirir.
YAGNI Prensibine Uyulmadığında Karşılaşacağınız Maliyetler
- Oluşturma Maliyeti: Bir özelliği analiz etmek, programlamak, dokümante ve test etmek için harcanan tüm çaba.
- Gecikme Maliyeti: Şimdi başka bir özellik oluşturmak ve yayınlamak için kaçırılan fırsat.
- Taşıma Maliyeti: Özelliğin koda eklediği karmaşıklık, yazılımı değiştirmeyi ve hata ayıklamayı zorlaştırır.
- Onarım Maliyeti: Şu anda tam olarak ihtiyacınız olan şey olmadığı için bir özelliği değiştirmek için harcanan çaba.
YAGNI Prensibine Uymak İçin
- Bir şeyleri her zaman gerçekten ihtiyacınız olduğunda uygulayın.
- İleride lazım olur ya da kullanılır düşüncesi ile kod yazmayın.
- Sizden geliştirilmesi ya da yapılması gereken işin dışına çıkmayın.
- İleriye yönelik iş yaptığınızda sizin için gecikme ve teknik borç anlamına gelir.
- Sadece o ana odaklı problemi basit şekilde çözüm üretmeye yönelik kodlama yapın.
- Kodları iyileştirme YAGNI için bir sorun teşkil etmez.
- Kodlara yeni özellikler eklerken gerçekten ihtiyaç olup olmadığından emin olun.
Clean Code'a Giriş adlı yazımı da okumanızı tavsiye ederim.
Diğer Prensipler:
Kaynak:
https://martinfowler.com/bliki/Yagni.html
https://betterprogramming.pub/yagni-you-aint-gonna-need-it-f9a178cd8e1
Umarım faydalı olmuştur. İyi çalışmalar dilerim.
Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.