Yazılım & Kodlama

DRY İlkesi: Kod Tekrarını Önlemek ve Doğru Dengeyi Bulmak

DRY ilkesi "kendini tekrar etme" der; ama aşırıya kaçtığında zararlı soyutlamalara yol açar. Kod tekrarının neden tehlikeli olduğunu ve DRY ile sadelik arasındaki dengeyi örneklerle anlatıyoruz.

DRY İlkesi: Kod Tekrarını Önlemek ve Doğru Dengeyi Bulmak

Yazılım dünyasının en bilinen kısaltmalarından biri DRY'dır: "Don't Repeat Yourself", yani "Kendini Tekrar Etme". İlk bakışta apaçık görünen bu ilke, aslında derinlikli bir mühendislik disiplinidir. Kötü uygulandığında ise iyi niyetle başlayıp kod tabanını içinden çıkılmaz bir yumağa çeviren tuzaklar barındırır. Bu yazıda DRY'ın gerçekte ne anlattığını, kod tekrarının neden tehlikeli olduğunu ve DRY'ı abartmanın ne zaman daha büyük soruna dönüştüğünü ele alacağız.

DRY İlkesi: Kod Tekrarını Önlemek ve Doğru Dengeyi Bulmak
Temiz kod ve yazılım mimarisi

DRY Gerçekte Neyi Söyler?

DRY sıklıkla "aynı kodu iki kere yazma" diye özetlenir; ama asıl tanımı daha incedir. İlkenin özgün ifadesi şudur: "Her bilgi parçası bir sistemde tek, kesin ve yetkili bir temsile sahip olmalıdır." Yani DRY sadece kod satırlarıyla değil, bilgi ve kararlarla ilgilidir. Aynı iş kuralının iki farklı yerde ayrı ayrı tanımlanması, gerçek DRY ihlalidir.

DRY, kopyalanan satırlarla değil, kopyalanan bilgiyle ilgilenir. İki kod parçası tesadüfen benziyorsa bu tekrar değildir; ikisi de aynı gerçeği ifade ediyorsa tekrardır.

Kod Tekrarı Neden Tehlikelidir?

Aynı mantığı birden fazla yere kopyaladığınızda, geleceğe bir tuzak kurmuş olursunuz. Bir gün o mantık değişir; siz de tüm kopyaları bulup güncellemek zorunda kalırsınız. Birini kaçırırsanız, sisteminiz aynı soruya iki farklı cevap verir. Bu, en zor bulunan hataların klasik kaynağıdır.

  • Güncelleme kâbusu: Bir değişiklik, birden çok yerde eşzamanlı düzeltme gerektirir.
  • Tutarsızlık riski: Kopyalardan biri güncellenmezse davranış farklılaşır.
  • Şişkin kod tabanı: Tekrarlar okumayı ve anlamayı zorlaştırır.
  • Gizli hatalar: Aynı hata birden çok kopyaya yayılır ve düzeltmesi ele avuca sığmaz.

Tekrarı Ortadan Kaldırmanın Yolları

Tekrarı gördüğünüzde elinizde birçok araç vardır:

  1. Fonksiyon çıkarma: Ortak mantığı tek bir fonksiyona taşımak en temel çözümdür.
  2. Sabitler ve yapılandırma: Tekrar eden değerleri (KDV oranı, ücretsiz kargo sınırı) tek bir yerde tanımlayın.
  3. Kalıtım ve kompozisyon: Ortak davranışı üst sınıfta veya paylaşılan bir bileşende toplayın.
  4. Şablonlar ve yardımcılar: Tekrar eden görünüm veya biçimlendirme mantığını ortak yardımcılara alın.
// Kötü: KDV oranı üç ayrı yerde tekrar ediyor
$fiyat1 = $tutar1 * 1.20;
$fiyat2 = $tutar2 * 1.20;

// İyi: tek yetkili tanım
const KDV_ORANI = 0.20;
function kdvliFiyat($tutar) {
    return $tutar * (1 + KDV_ORANI);
}
DRY İlkesi: Kod Tekrarını Önlemek ve Doğru Dengeyi Bulmak
Sürüm kontrolü ve Git iş akışı

DRY'ın Karanlık Yüzü: Yanlış Soyutlama

DRY'ı fanatikçe uygulamak, tekrar kadar tehlikeli olabilir. İki kod parçası bugün benziyor diye onları hemen tek bir soyutlamada birleştirmek, ileride ikisi farklı yönlere evrildiğinde büyük bir baş ağrısına dönüşür. Bu duruma "yanlış soyutlama" denir ve genellikle çözdüğünden çok sorun yaratır.

Deneyimli geliştiriciler arasında meşhur bir söz vardır: "Yinelenme, yanlış soyutlamadan daha ucuzdur." Yani iki parçanın gerçekten aynı bilgiyi mi taşıdığından emin değilseniz, onları birleştirmek için biraz beklemek daha akıllıcadır.

Erken soyutlama, çözmediğiniz bir problemi çözmeye çalışmaktır. Önce tekrarın gerçek olduğundan emin olun, sonra birleştirin.

Tesadüfi Benzerlik ile Gerçek Tekrar

İki fonksiyon bugün aynı üç satırı içeriyor olabilir; ama biri sipariş indirimini, diğeri kargo indirimini hesaplıyorsa, bunlar farklı iş kurallarıdır. Yarın biri değişir ve zorla birleştirdiğiniz soyutlama çatlamaya başlar. Ayırt edici soru şudur: "Bu iki parça hep birlikte mi değişecek, yoksa bağımsız mı?"

Pratik Bir Denge Rehberi

  • Bir mantığı ilk kez yazarken tekrarı henüz aramayın.
  • İkinci kez ihtiyaç duyduğunuzda not edin ama hemen soyutlamaya koşmayın.
  • Üçüncü kez karşınıza çıktığında, kalıbın gerçek olduğunu artık görürsünüz; şimdi soyutlayın.
  • Soyutladıktan sonra, iki kullanım farklılaşmaya başlarsa geri ayırmaktan çekinmeyin.

Berasoft'ta DRY Yaklaşımı

Özel yazılım projelerinde iş kurallarını tek bir yetkili yerde toplamak, bakımı olağanüstü kolaylaştırır. KDV oranı, kargo eşiği, komisyon hesabı gibi kararları koda dağıtmak yerine merkezî yapılandırmada tutarız. Böylece bir kural değiştiğinde tek bir dokunuş yeter. Aynı zamanda tesadüfi benzerlikleri zorla birleştirmemeye özen gösteririz; çünkü esnek kalmak, projeler büyüdükçe altın değerindedir.

Sonuç

DRY, kod tabanınızı tutarlı ve bakımı kolay tutmanın güçlü bir ilkesidir; ama bir dogma değil, bir yargı meselesidir. Gerçek bilgi tekrarını ortadan kaldırırken, tesadüfi benzerlikleri erkenden birleştirmenin tuzağından kaçınmak gerekir. Ustalık, tekrarı görmekle değil; hangi tekrarın gerçek, hangisinin geçici olduğunu ayırt etmekle gelir. Sağlam ve sürdürülebilir bir kod tabanı üzerine kurulmuş bir çözüme ihtiyacınız varsa bizimle iletişime geçebilirsiniz.

Bu yazıyı paylaş:

Bir sonraki projeniz için hazır mısınız?

Okuduklarınızı işinize uygulamak veya dijital dönüşümünüzü konuşmak isterseniz, ekibimiz bir mesaj uzağınızda.

Görüşler

0 Yorum

İlk yorumu siz yazın.

Yorum Yap

Yorumlar moderatör onayından sonra yayınlanır.