在过去的一年中,我使用依赖注入和IOC容器创建了一个新系统。这教会了我很多关于DI的知识!
但是,即使在学习了概念和正确的模式之后,我仍然认为将代码解耦并将IOC容器引入旧版应用程序是一个挑战。该应用程序足够大,以至于真正的实现将是压倒性的。即使理解了价值并准予了时间。谁有时间抽出这样的东西?
当然,目标是将单元测试引入业务逻辑!
与防止测试的数据库调用交织在一起的业务逻辑。
我已经阅读了这些文章,并且了解了这篇Los Techies文章中描述的穷人依赖注入的危险。我了解它并没有真正分离任何东西。
我知道它可能涉及很多系统范围的重构,因为实现需要新的依赖项。我不会考虑在任何大小的新项目中使用它。
问题:可以使用穷人的DI 将可测试性引入旧版应用程序并开始滚动吗?
另外,使用穷人的DI作为真正依赖注入的基层方法是否是教育该原理的需求和收益的有价值的方法?
您是否可以重构具有数据库调用依赖关系的方法,并将该调用抽象到接口后面?简单地拥有这种抽象将使该方法可测试,因为可以通过构造函数重载传递模拟实现。
将来,一旦获得支持者的支持,就可以对该项目进行更新以实现IOC容器,并且构造函数将在那里使用抽象。
I consider it a challenge to decouple code and introduce an IOC container into a legacy application
当然是。它被称为技术债务。这就是为什么在进行任何重大改进之前,最好进行小型且连续的重构。减少主要的设计缺陷,转移到IoC的挑战将更少。