Bağımlılık enjeksiyonunun (DI) ve otomatik testlerin büyük bir hayranı olduğumu bilmeme izin verin . Bütün gün bunun hakkında konuşabilirim.
Arka fon
Son zamanlarda, ekibimiz sıfırdan inşa edilecek bu büyük projeyi yeni aldı. Karmaşık iş gereksinimlerine sahip stratejik bir uygulamadır. Tabii ki, güzel ve temiz olmasını istedim, ki bu da benim için kastedilebilir: test edilebilir ve test edilebilir. Bu yüzden DI kullanmak istedim.
Direnç
Sorun ekibimizdeydi, DI tabu. Birkaç kez büyütülmüş, ancak tanrılar onaylamıyor. Ama bu beni caydırmadı.
Benim hamle
Bu garip gelebilir, ancak üçüncü taraf kütüphaneleri mimar ekibimiz tarafından genellikle onaylanmaz (düşünün: " Birlik , Ninject , NHibernate , Moq veya NUnit , parmağınızı kesmeme izin vermezsiniz"). Bu yüzden kurulmuş bir DI konteyneri kullanmak yerine, son derece basit bir konteynır yazdım. Temelde başlangıçta tüm bağımlılıklarınızı bağladı, herhangi bir bağımlılığı enjekte etti (yapıcı / özellik) ve web isteğinin sonunda atılabilir nesneleri attı. Son derece hafif ve sadece ihtiyacımız olanı yaptım. Sonra onlardan incelemelerini istedim.
Tepki
Kısa yapmak için. Ağır bir dirençle karşılaştım. Asıl argüman, “Bu karmaşıklık katmanını zaten karmaşık bir projeye eklememiz gerekmiyor” idi. Ayrıca, "Farklı bileşen uygulamalarına bağlayacağımız gibi değil". Ve "Basit tutmak istiyoruz, mümkünse her şeyi tek bir düzene sokmak istiyoruz. DI faydasız bir istenmeyen karmaşıklıktır".
Sonunda benim sorum
Durumumu nasıl idare edersiniz? Fikirlerimi sunmakta iyi değilim ve insanların tartışmalarını nasıl sunacaklarını bilmek istiyorum.
Tabii ki, benim gibi, DI kullanmayı tercih edersiniz. Kabul etmiyorsan, lütfen nedenini söyle, böylece madalyonun diğer tarafını görebilirim. Aynı fikirde olmayan birinin bakış açısını görmek gerçekten ilginç olurdu.
Güncelleme
Herkesin cevapları için teşekkür ederim. Gerçekten işleri perspektife sokuyor. Size geribildirim vermek için başka bir göze sahip olmak yeterince güzel, onbeş gerçekten harika! Bu gerçekten harika cevaplar ve sorunu farklı açılardan görmeme yardımcı oldu, ancak yalnızca bir cevabı seçebilirim, o yüzden en çok oyu seçtim. Cevap vermeye zaman ayırdığınız için herkese teşekkürler.
DI'yi uygulamak için en iyi zaman olmadığına karar verdim ve buna hazır değiliz. Bunun yerine, tasarımımı test edilebilir hale getirme ve otomatik birim testini sunma girişiminde bulunacağım. Yazma testlerinin ek bir ek yük olduğunu ve ek ek yükün buna değmeyeceğine karar verilirse şahsen, tasarımın hala test edilebildiği için şahsen bir kazanma durumu olarak göreceğimi biliyorum. Ve herhangi bir test veya DI gelecekte bir seçim ise, tasarım kolayca üstesinden gelir.