Principle Of DRY ve Principle Of WET Nedir?

Principle Of DRY ve Principle Of WET Nedir?
Yazılımda kod yazarken bir mimari, bir düzen içerisinde kodları veya kod bloklarını yerleştirdiğimizi bilmemiz gerekir. Burada bizlere “algoritma ve programlama, yazılım mimarisi gibi konular” yardımcı oluyor. Programlamada genellikle class (sınıf) tanımlarken, değişken tanımlarken, bu kodu tekrar kullanacağımızı bildiğimiz için class ve değişken gibi tanımlamaları kullanırız. Burada asıl amacımız değişkene atadığımız değeri tekrar uzun uzun yazmaktan kaçınmak, bir nevi enerji ve zaman maliyetini minimuma getirmektir. Kimse aynı kodu yazmaktan hoşlanmaz. Yoksa bu “kimse aynı kodu yazmaktan hoşlanmaz” cümlesi WET prensibini benimseyenler için yanlış bir cümle mi oldu? Bu bağlamda DRY ve WET prensibini öğrenmenin asıl vakti geldi.

DRY Prensibi Nedir?

DRY Prensibi: DRY açılım olarak “Don’t Repeat Yourself” anlamına gelir. Türkçeye çevirirsek “kendini tekrar etme” demektir. Adından anlaşılacağı üzere DRY bir kod satırını/bloğunu tekrar kullanmaktan kaçınmamızı söyleyen prensiptir. DRY, tekrar tekrar yazılan kod bloklarının oluşturacağı karmaşayı minimuma indirmek vasıtasıyla benimsenmesi gereken prensiptir. DRY prenibine göre, her kod satırı/bloğu bir sistemde kesin bir yetkinlikle bir değişkene veya fonksiyona atamak bağlamında sadece bir defa kullanılmalıdır. Bundan sonra atadığımız o kodu “sürekli” atadığımız fonksiyon veya değişken aracılığı ile kullanacağız.
Bu prensibe göre eğer bir problem için birden farklı çözüm yolu varsa bu yollar bir noktada çelişmesi olasıdır. Şayet çelişmese dahi bir noktada değiştirilmeyen veya güncelliğini yitiren kod satırları/bloklarının, problem oluşturmayacağı kesin değildir. Özetle her kod satırı kendini sürekli güncel tutmalıdır. Aksi taktirde problem yaratması olasıdır. Mantıksal yollar bu bağlamda bu prensibe uygun olarak problem çözme aşamasında minimum karmaşa ile seçilmelidir.

DRY Prensibinin Avantajları Nelerdir?

DRY prensibinin avantajları aslına bakılırsa 4 madde ile sıralanabilir. Bunları kısaca sizlere aktaracak olursak;
Sürdürülebilirlik: Sürdürülebilirlik sağlaması DRY prensibinin kanımca en önemli avantajları arasındadır. Bu bağlamda DRY prensibinin avantajlarından olan sürdürülebilirliğin kullanılması, kod satırının/bloğunun devamlı çalışmasını, kod içerisinde oluşabilecek çakışmaları, mantıksal hataları ve aksamaları engellemeye olanak sağlar.
Okunabilirlik: Daha kolay analiz edilebilen, okunabilen sistem kodlarını yazmayı her başarılı yazılımcı ister. Özellikle büyükçe bir ekipte kod analizini gerçekleştiren ekip üyelerinin işini kolaylaştırmak bağlamında önemli bir etmendir.
Tekrar Kullanılabilirlik: Tekrar kullanılabilirlik, oluşan problemlerin çözüm sürecininde hatanın hangi sebepten oluştuğunu tespit edilmesi, problemin hangi satırdan kaynaklandığını bizlere aktarmak amacıyla, yazılan kodu tekrar kullanılabilir bir halde olması ile bizlere avantaj sağlar. Burada bizlere fonksiyon tanımlama yardımcı olabilir. Böylece aynı kodu “tekrar kullanabilir” halde yazmış oluruz, bu da DRY prensibinin asıl amacını bizlere gösteriyor.
Test Edilebilirlik: Oluşması olası problemleri, bugları bizlere bildirmesi amacıyla test edilebilirilk de DRY prensibinin önemli avantajlarındandır.

WET Prensibi Nedir

DRY prensibinin zıttı dersek aslında hiçte yanlış bir tanım yapmış olmayız. WET prensibinin açılımı “Write Everythink Twice” dir. Türkçeye çevirecek olursak “Herşeyi İkinci Defa Yaz” anlamına gelir. Aynı kod satırını/bloğunu iki defa yazmak doğrultusunda kullanılan bu prensip, DRY prensibinin aksine bizlere çoğunlukla zaman ve enerji bakımından maliyeti arttırır. Ancak burada elbette WET prensibinin DRY prensibine göre nadiren olsa da kimi zaman daha az maliyete sahip olduğunu da unutmamalıyız.
WET prensibi, “yazmaktan mutlu oluyoruz” veya “herkesin zamanını boşa harcıyoruz” şeklinde ki ibarelerle anılır ve bu prensibin kullanılması genelde tavsiye edilmez. Eğer WET prensibini benimsememişse kimse daha fazla kod satırı/bloğu ile uğraşmak veya tekrar yazmak istemez. Çünkü algoritma ve programlamada olduğu gibi sistem büyüdükçe, kod sayısı arttıkça sistem karmaşıklaşır ve bu bağlamda işin içinden çıkılmaz bir hal alır, sonucunda ise bir problem ile karşılaşıldığında, DRY prensibinin aksine, “test edilebilirlik“ ve “okunabilirlik” daha zor hale gelir.
Hangi Prensibi Benimsemeliyiz, DRY Mı? Wet Mi?
Anlatılanlara bakılacak olunursa herkesin DRY prensibinin daha mantıklı bir seçenek olduğunu düşüneceğini anlayabiliriz. Ancak burada sizlere tekrar söylemeliyim ki WET prensibi genel olarak biraz yanlış anlaşılıyor. Bu bağlamda kimi zaman bazı kod satırlarını/bloklarını copy-paste yapmak bir fonksiyona atamaktan veya bir değişkene atamaktan daha kolay olabilir. Bunun sonucu olarak da aynı kod bloğunu veya satırını harfi harfine aynı işlev için kullanmış oluyoruz. Yani burada bahsetmek istediğim bir iki defa aynı kodu kullanmak yani copy-paste yapmanın bir nevi DRY prensibinin benimseyen kişiler için, kaçamak yapmak kimi zaman sizlere avantaj sağlar.
Burada hangi prensibi benimseyeceğiniz tamamen sizlerin seçimine kalmıştır. Ancak iki prensibinde, en azından DRY prensibinin daha avantajlı durduğunu göz önünde bulundurarak iki prenispten de faydalanmanın doğru olduğnu düşünüyorum. Kısacası WET prensibini bazen kullanmanın bizlere yarar sağlayacağını göz önünde bulundurmalıyız. Bu başlığı özetleyecek olursak, DRY prensibi, genellikle bizleri maliyetten (zaman ve enerji) kurtardığı gibi nadiren de olsa WET prensibine göre daha çok maliyete sebep olabilir. Bu bağlamda sizlere tavsiyem iki prensibinde avantajlarını göz önünde bulundurarak iki prensibi de yerine göre kullanmak sizleri minimum maliyetle maksimum proje veya ürün kalitesine ulaştıracaktır.
Öncelikle okuduğunuz için teşekkür ederim, bu makalede sizlere; DRY Prensibi Nedir? DRY Prensibinin Avantajları Nedir? WET Prensibi Nedir? Hangi Prensibi Benimsemeliyiz, DRY Mı? Wet Mi? Başlıkları altında DRY ve WET prensibi hakkında fikir sahibi olduğumuzu umuyorum.