DRY Prensibi

dry prensibi

Anlaşılması ve uygulanması en kolay prensiplerdendir. İlk kez The Pragmatic Programmer kitabıyla birlikte hayatımıza girmiştir. DRY prensibi Türkçesiyle kendini tekrarlama anlamına gelmektedir. Anlamı itibariyle kod tekrarının önüne geçmeyi hedeflemektedir.

DRY prensibi mevcut kodların işlevsel olarak kümelenerek küçük parçalara ayrılmasıyla uygulanmaktadır. Bu sayede kod tekrarı önlenerek tekrar kullanılabilirlik (reusable) arttırılmaktadır. Aynı kod bloğuna farklı bir noktada ihtiyaç duyulduğunda kopyalanması yerine parçalanarak farklı bir method haline getirilmesiyle uygulanmaktadır. Olası revizyon durumlarında değişiklik tek bir noktadan yapılacağından, kod her yerde aynı şekilde çalışacaktır. İşlevsellik küçük parçalara ayrıldığından okunabilirlik de artacaktır. Bu prensibin uygulanmasındaki kilit nokta bir kod bloğu birden fazla yerde kullanıyor ya da kullanılacaksa kesinlikle parçalanmalıdır.

Prensibi pekiştirmek adına konuyla ilgili ufak bir örnek yapalım. Bir e-ticaret projesinde siparişlerle ilgili işlemleri yöneten bir sınıfımız olduğunu düşünelim.

Sipariş oluşturma, iptal gibi işlemler sonrasında kullanıcıya durum bildirimleri e-postayla geçilmektedir. Görüldüğü üzere method içerisinde hem SOLID prensipleri ihlal edilmekte hem de kod tekrarı yapılmaktadır. Kullanıcıya başka bir method içerisinde e-posta gönderilmesi istenildiğinde aynı kodların tekrar yazılması gerekecektir. Böylece okunabilirlik daha da düşecektir. Bir değişiklik yapılacağında tüm tekrarların düzeltilmesi gerekecektir. DRY prensibi kapsamında sınıfımızı prensibe uygun hale getirelim.

Görüldüğü üzere birden fazla method içerisinde tekrarlanan yapılar farklı bir method haline getirilmiştir. Bu sayede kod tekrarının önüne geçilirken yönetim ve okunabilirlik de arttırılmaktadır. E-posta gönderilmesi gibi işleve sahip methodlar yalnızca bir sınıf tarafından kullanılmayacaktır. Bu sebeple sınıftan koparılarak proje kullanımına sunulabilmesi için farklı bir yardımcı sınıf haline getirilmelidir.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.