Basit sabit genel API sağlayarak bağımlılık enjeksiyonunu kullanarak test edilebilir tasarımı nasıl dengeleyeceğimizi düşünüyorum. Benim açmazım: insanlar böyle bir şey yapmak isteyeceklerdi var server = new Server(){ ... }
ve a'nın sahip olabileceği birçok bağımlılık ve bağımlılık grafiği oluşturma konusunda endişelenmek zorunda değiller Server(,,,,,,)
. Gelişirken, tüm bunları ele almak için bir IoC / DI çerçevesi kullandığım için çok fazla endişelenmiyorum (herhangi bir kabın yaşam döngüsü yönetimi yönlerini kullanmıyorum, bu da işleri daha da karmaşıklaştıracak).
Şimdi, bağımlılıkların yeniden uygulanması pek olası değildir. Bu durumda bileşenleme, uzatma için dikişler oluşturmaktan ziyade neredeyse sadece test edilebilirlik (ve iyi tasarım!) İçindir. İnsanlar zamanın% 99.999'u varsayılan bir yapılandırma kullanmak isteyecektir. Yani. Bağımlılıkları zor kodlayabilirim. Bunu yapmak istemiyorum, testimizi kaybediyoruz! Ben sabit kodlu bağımlılıkları ve bağımlılıkları alır bir varsayılan bir kurucu sağlayabilir. Bu ... dağınık ve kafa karıştırıcı olması muhtemel, ancak uygulanabilir. Bağımlılık alma kurucu iç yapabilir ve benim birim testleri bir arkadaş montaj (C # varsayarak), genel API düzenler ama bakım için gizlenen bir gizli tuzak bırakıyor yapabilirsiniz. Kitabımda açıkça değil, açıkça bağlı iki kurucuya sahip olmak kötü bir tasarım olurdu.
Şu anda aklıma gelen en az kötülük hakkında. Görüşler? Bilgelik?