DRY'yi yapmazsınız çünkü birileri bir kitapta yapmanın iyi olduğu bir yere yazmıştır, çünkü DRY'yi yaparsınız çünkü aslında maddi faydaları vardır.
Özellikle bu sorudan:
Kendinizi tekrarlarsanız, bakım sorunları oluşturabilirsiniz. DoStuff1-3 modelinde hepsi benzer şekilde yapılandırılmış bir koda sahipse ve bir sorunu çözdüyseniz, sorunu başka yerlerde çözmeyi kolayca unutabilirsiniz. Ayrıca, ele almak için yeni bir vaka eklemek zorunda kalırsanız, her yere kopya yapıştırmak yerine farklı parametreleri tek bir işleve geçirebilirsiniz.
Bununla birlikte, DRY akıllı programcılar tarafından sıklıkla aşırı bir duruma getirilir. Bazen kendini tekrar etmemek için soyutlamalar yapmalısın, bu yüzden takım arkadaşlarının onları takip edemeyeceği kadar geniş. Bazen iki şeyin yapısı sadece belli belirsiz fakat yeterince farklıdır. DoStuff1-4, kendilerini tekrar etmemek için yeniden yapılandırmanın, doğal olmayan kodlar yazmanıza veya ekibinizin size göz kamaştırmasına neden olacak akıllı kodlama backflipslerine maruz kalmanıza neden olacak kadar farklıysa, o zaman kendinizi tekrarlamanız uygun olabilir. Doğal olmayan yollardan kendimi birkaç kez tekrarlamamak için geriye doğru eğildim ve son üründen pişman oldum.
Bu yüzden, temel olarak, "ahbap, bu kod oldukça benzer, belki de kendimi tekrar etmemeyi reddetmeliyim" diye düşünmeyin. "Bu kod tabanını yeniden kullanmak için ortak öğeleri yeniden kullanmak için yeniden yapılanmanın, kodu daha sürdürülebilir veya daha az bakım gerektirebilir hale getirdiğini mi düşünüyorsunuz?" Ardından, daha bakım yapılabilir kılanı seçin.
Bu varlık verilen dedi SRP bunun için kodunuzu analiz etmek mantıklı olabilir ve sadece genel olarak küçük ve esnek sınıfları çalışırken Bu nedenle , genel türlerini kullanmak davranış bitlerini parçalayın içine (onlar türü dışında özdeş başka olduğunu söyledi) küçük sınıflar Sonra, bu sınıfların bazılarının tamamen özdeş olduğunu (sadece özdeş değil) öğreneceksiniz ve sonra eklemek istediğiniz bir araç seti oluşturabilirsiniz Microsoft.CodeAnalysis.CPlusPlus.Syntax.AttributeSyntax
.