Bağımlılık Enjeksiyonu ve IoC Konteynerleri hakkında bir konuşma yapmayı planlıyorum ve bunu kullanmak için bazı iyi argümanlar arıyorum.
Bu tekniği ve bu araçları kullanmanın en önemli faydaları nelerdir?
En önemlisi, benim için Tek Sorumluluk İlkesi 'yi takip etmeyi kolaylaştırmak.
DI/IoC, nesneler arasındaki bağımlılıkları yönetmemi kolaylaştırıyor. Buna karşılık, benim için tutarlı işlevselliği kendi sözleşmesine (arayüzüne) ayırmamı kolaylaştırıyor. Sonuç olarak, DI/IoC öğrendiğimden beri kodum çok daha modüler hale geldi.
Bunun bir başka sonucu da Açık-Kapalı Prensibi 'ı destekleyen bir tasarıma geçmeyi çok daha kolay görebilmemdir. Bu en güven verici tekniklerden biridir (yalnızca otomatik testten sonra ikinci). Açık-Kapalı İlke'nin erdemlerini yeterince benimseyebileceğimden şüpheliyim.
DI/IoC, programlama kariyerimde "oyun değiştirici" olan birkaç şeyden biri. DI/IoC öğrenmeden önce ve sonra yazdığım kod arasında bir huge kalite boşluğu var. Bunu biraz daha vurgulayayım. [~ # ~] Kod kalitesinde büyük [~ # ~] iyileştirme.
Gözlerimi gerçekten açan örnekler, böyle bir tarzda yaratılan nesneleri kolayca birim olarak test etmeyi nasıl mümkün kıldığını görüyordu. Bundan önce, bir birim testi için nesneleri izole etmeye çalışırken sorun yaşadım. Sık sık çok daha büyük bir sistemle etkileşim için testler yazardım. Bu gerçekten zordu çünkü sistem bir bütün olarak tek tek bileşenlerden çok daha az tahmin edilebilir ve değişime daha yatkındır.
Bağımlılık enjeksiyonlarının avantajları:
Bence gerçek faydalar teknik olmaktan daha politik. DI sadece Servis Buluc modeline bir alternatiftir, başka bir şey değildir. Kendi başına, SRP veya OCP gibi ilkeleri takip etmeyi veya katmanları ayırmayı kolaylaştırmaz. Buradaki diğer katılımcılar farklı kavram ve teknikleri karıştırıyorlar, IMO.
Servis Bulucuları kullanarak veya uygulanabilir olduğunda doğrudan bağımlılıkları somutlaştırarak (çoğu zaman), yüksek uyum ve düşük kuplaj ile aynı hedefleri gerçekleştirebilirsiniz.
Şimdi, birçok kişinin bu görüşe katılmayacağını biliyorum. Somut örnekleri tartışmaktan memnuniyet duyarım.