Bir F fonksiyonunu uygulayan bir yazılım modülümüz A olduğunu varsayalım. Başka bir B modülü F 'ile aynı fonksiyonu uygular.
Yinelenen koddan kurtulmanın birkaç yolu vardır:
- A'nın B'den F 'kullanmasına izin verin.
- B'nin A'dan F'yi kullanmasına izin verin.
- F'yi kendi modül C'sine yerleştirin ve hem A hem de B'yi kullanmasına izin verin.
Bu seçeneklerin tümü modüller arasında ek bağımlılıklar oluşturur. DRY prensibini artan bağlantı maliyetine uygularlar.
Görebildiğim kadarıyla DRY uygulanırken kuplaj daima artar veya kiralanır. Yazılım tasarımının en temel iki ilkesi arasında bir çelişki var gibi görünüyor.
(Aslında böyle çatışmaların olması şaşırtıcı değil. Bu muhtemelen iyi yazılım tasarımını zorlaştıran şeydir. Bu çatışmaların normalde tanıtım metinlerinde ele alınmamasını şaşırtıcı buluyorum.)
Edit (açıklama için): F ve F 'eşitliğinin sadece bir tesadüf olmadığını varsayıyorum. F 'nin değiştirilmesi gerekiyorsa, F' muhtemelen aynı şekilde değiştirilmelidir.