Dont Repeat Yourself (DRY) Prensibi
DRY (Don’t Repeat Yourself)
Don’t repeat yourself (DRY), yazılım kalıplarının tekrarlanmasını (code duplication) ve buna bağlı olarak ortaya çıkabilecek fazlalıkların / karmaşanın önlenmesini amaçlayan bir yazılım geliştirme ilkesidir. DRY prensibi, “Her bilginin bir sistem içinde tek, kesin ve yetkili bir temsili ile var olması” gerektiğini vurgular. Prensip Andy Hunt ve Dave Thomas tarafından Pragmatic Programmer kitabında formüle edilmiştir.
Dave Thomas, “Çoğu kişi DRY’i kodun tekrarından kaçınmak ile sınırlandırsa da, prensibin ardındaki fikir bunun çok daha ötesindedir” der. Tüm bu bilgiler göz önüne alındığında, neden her özelliği temsil eden bir yol bulmaya çalışmayalım? İlk akla gelen cevap, eğer aynı amaca hizmet eden birden fazla yol söz konusu ise büyük ihtimalle her yol bir diğeri ile çelişecektir. Çelişmeseler dahi, bir değişiklik gerçekleştirildiğinde yine bir sorun yaşanmayacağının garantisi yoktur.
DRY prensibinin başarıyla uygulanması, sistemde herhangi bir değişiklik söz konusu olduğunda diğer mantıksal elemanların bu değişiklikten etkileyip etkilemeyeceğini düşünmememiz anlamına gelir. Ek olarak, ilişkili mantıksal elemanlarda da etkiler tahmin edilebilir olacağı için düzgün bir şekilde süreç ele alınacak ve değişiklikler güncel olarak yönetilebilecektir.
DRY Prensibinin Avantajları
DRY prensibinin sunduğu avantajları bir kaç alt başlık altında, özet bir şekilde ifade edebiliriz.
Sürdürülebilirlik (Maintainability)
DRY ile öne çıkan en önemli fayda tekrarlanan kodlar sebebiyle söz konusu olabilecek çakışmalar, aksamalar ve hataların önüne geçilebilmesidir. bu sayede, ilişkili bir logic işlemde ortaya çıkabilecek bir geliştirme ihtiyacı veya sorun kolaylıkla tek bir alan üzerinden çözülür.
Okunaklılık (Readability)
DRY prensibi ile yazılan bir kod çok daha kolay okunur / analiz edilir / anlaşılır. Elbette bu doğrudan DRY sayesinde değil, DRY prensibi ile kodu ele alan geliştirici sayesinde ortaya çıkan bir durumdur. Çünkü, geliştirici bu prensip doğrultusunda daha fazla çaba göstererek daha detaylı bir çözüm yolu ortaya koymalıdır.
Tekrar Kullanılabilirlik (Reuse)
DRY vurguladığı bakış açısı gereği, kod tekrarı yerine kodun tekrar kullanımını teşvik eder. Yeniden kullanılabilir kod, geliştirme süresini hızlandırdığı için maliyet avantajı sağlar.
Test Edilebilirlik (Testing)
Ne kadar çok işlem söz konusu ise o kadar fazla test kodu yazılması gerekir. Eğer, kod tekrarı söz konusu değilse bu daha az test işlemi demektir. Dolayısıyla DRY sayesinde daha etkin ve pratik test süreçleri (unit testing ve integration testing) söz konusu olacaktır.
WET (Write Everything Twice)
Write Everything Twice (WET), DRY prensibinin zıttı olarak nitelendirilebilir. “Her şeyi iki kere yaz”, “yazmaktan mutluluk duyuyoruz”, “herkesin zamanını boşa harcıyoruz” gibi ifadelerle tanımlanır.
Yazılım öğrenme sürecimde beni etkileyen prensiplerden biriydi. Öğrendikten sonra sadece kodlamada değil her alanda uyguladığım prensiptir DRY prensibi. Bu nedenle şirketimin adını DRY Yazılım olarak kurdum.