DRY vs Code coupling hakkında rehberlik arıyorum. Kodumu çoğaltmayı sevmiyorum ve ayrıca ilgisiz modüller arasında kod bağlamayı sevmiyorum. Çoğaltma tanıtıldıktan bir yıl sonra aynı kod tekrar bulursam bu yüzden yinelenen kodu refactor. Ancak, gerçek dünyanın çok daha öngörülemez olduğu durumları giderek artan bir şekilde yaşadım ve kodu yeniden düzenledikten sonra, kodu tekrar çatallamayı gerektiren durumlar ortaya çıkıyor.
Örneğin, benzinli arabaları, benzinli SUV'ları, elektrikli arabaları ve elektrikli SUV'ları işlemek için kodum olsaydı, yinelenen kodu "benzin" hiyerarşisine ve "elektrikli" hiyerarşiye yeniden düzenlediğimi varsayalım, her ikisi de "araç" hiyerarşisine iner. Çok uzak çok iyi. Ve sonra, şirketim orijinal bir hiyerarşimde temel değişiklikler gerektirecek bir hibrit otomobil ve bir melez Yarı tanıtıyor. Belki benzin ve elektrik hiyerarşileri arasında "bileşim" gerektirebilir.
Açıkça kod çoğaltma kötüdür, çünkü yukarıdaki tüm ürünler için ortak bir değişikliğin uygulanması için geçen süreyi arttırır. Ancak ortak kodu yeniden düzenlemek, ürüne özgü varyasyonları tanıtmayı eşit derecede zorlaştırır ve bir hatayı düzeltmek için kod satırını bulmak zorunda kaldığında çok sayıda "sınıf atlama" ya yol açar - daha üst düzey bir ana sınıftaki bir değişiklik tüm torunları arasında tetikleyici regresyon hatalarını tetikler.
DRY ile istenmeyen kod bağlantısı arasındaki en uygun denge nasıl sağlanır?