众所周知,我是依赖注入(DI)和自动化测试的忠实拥护者。我可以整天谈论它。
背景
最近,我们的团队刚刚获得了一个从头开始构建的大型项目。它是具有复杂业务需求的战略应用程序。当然,我希望它美观大方,对我而言意味着:可维护且可测试。所以我想使用DI。
抵抗性
问题出在我们的团队中,DI是禁忌。它被提出了几次,但是众神不赞成。但这并没有阻止我。
我的举动
这听起来可能很奇怪,但是第三方库通常不经我们的架构师团队批准(请考虑:“您不要谈论Unity,Ninject,NHibernate,Moq或NUnit,以免割伤您的手指”)。因此,我没有使用已建立的DI容器,而是编写了一个非常简单的容器。基本上,它在启动时连接了所有依赖项,注入了任何依赖项(构造函数/属性),并在Web请求结束时处置了所有可抛弃对象。它非常轻巧,可以满足我们的需求。然后我请他们进行审查。
响应
好吧,简而言之。我遭到了沉重的抵抗。主要论点是:“我们不需要在已经很复杂的项目中增加这种复杂性”。另外,“这不像我们将插入组件的不同实现”。而且,“我们希望保持简单,如果可能的话,只需将所有内容装入一个程序集。DI是一种无用的复杂性,没有任何好处”。
最后,我的问题
您将如何处理我的情况?我不能很好地表达自己的想法,我想知道人们将如何表达自己的观点。
当然,我假设像我一样,您更喜欢使用DI。如果您不同意,请说出原因,以便我能看到硬币的另一面。看到不同意的人的观点真的很有趣。
更新资料
谢谢大家的回答。它确实使事情成为现实。拥有另一双眼睛可以给您反馈非常好,十五岁的确很棒!这确实是一个很好的答案,可以帮助我从不同角度看待这个问题,但是我只能选择一个答案,所以我只选择投票率最高的一个。感谢大家花时间回答。
我认为现在可能不是实施DI的最佳时机,我们还没有做好准备。相反,我将致力于使设计可测试,并尝试提出自动化的单元测试。我知道编写测试是额外的开销,并且如果曾经确定额外的开销不值得,我个人仍然认为这是一个成功的情况,因为设计仍然可以测试。而且,如果将来进行测试或DI是一种选择,则设计可以轻松应对。