Bağımlılık Enjeksiyonu ve IoC Containers hakkında bir konuşma yapmayı planlıyorum ve kullanımı için bazı iyi argümanlar arıyorum.
Bu tekniği ve bu araçları kullanmanın en önemli faydaları nelerdir?
Bağımlılık Enjeksiyonu ve IoC Containers hakkında bir konuşma yapmayı planlıyorum ve kullanımı için bazı iyi argümanlar arıyorum.
Bu tekniği ve bu araçları kullanmanın en önemli faydaları nelerdir?
Yanıtlar:
Benim için en önemlisi, Tek Sorumluluk İlkesini takip etmeyi kolaylaştırmak .
DI / IoC, nesneler arasındaki bağımlılıkları yönetmemi kolaylaştırıyor. Bu da, uyumlu işlevselliği kendi sözleşmemize (arayüzüne) bölmemi kolaylaştırıyor. Sonuç olarak, kodum DI / IoC'yi öğrendiğimden beri çok daha modüler hale getirildi.
Bunun bir başka sonucu da Açık-Kapalı Prensibi destekleyen bir tasarıma geçiş yolumu daha kolay görebilmemdir . Bu, en güvenilir ilham veren tekniklerden biridir (yalnızca otomatik testlerden ikincisidir). Açık-Kapalı İlkenin erdemlerini yeterince destekleyebileceğimden şüpheliyim.
DI / IoC, programlama kariyerimde "oyun değiştirici" olan birkaç şeyden biri. Bir yoktur kocaman Daha önce & DI / IoC öğrendikten sonra yazdığı kod arasındaki kalite farkı. Bunu biraz daha vurgulayayım. Kod kalitesinde BÜYÜK gelişme.
Gerçekten gözlerimi açan örnekler, böylesi bir şekilde yaratılmış objeleri kolayca test etmenin nasıl mümkün olduğunu görüyordu. Ondan önce, bir ünite testi için nesneleri izole etmekte zorlandım. Genellikle daha büyük bir sistemle etkileşime geçmek için testler yazarım. Bu gerçekten zordu çünkü sistem bir bütün olarak daha az öngörülebilirdi ve tek tek bileşenlerden sonra değişime yatkındı.
Bağımlılık enjeksiyonlarının avantajları:
Bence asıl faydalar teknikten daha politik. DI sadece Servis Bulucu modeline bir alternatiftir , daha fazlası değil. 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 Belirleyicileri kullanarak veya uygun olduğunda doğrudan bağımlılıkları somutlaştırarak (çoğu zaman bu) doğrudan yüksek uyum ve düşük eşleşme ile ilgili aynı hedefleri gerçekleştirebilirsiniz.
Şimdi, çoğunun bu görüşe katılmayacağını biliyorum. Somut örnekleri tartışmaktan memnuniyet duyacağım.
DI, test amacıyla iç nesneleri ortaya çıkarmak için kullanıldığında, desen kötüye kullanılmıştır.