我目前正在将一个包含大量意大利面条式遗留代码的大型应用程序重构为更结构化、更易于维护、最重要的是可测试的东西。我可以看到,显然将类依赖项注入其中,而不是将对象创建与业务逻辑混合在一起,这使得编写单元测试变得更加容易。
我已经阅读了关于“使用依赖注入不当导致的问题多于解决的问题”的评论。这到底是什么意思呢?对于如此复杂的措辞,依赖注入似乎是一个非常简单的概念。您如何滥用通过构造函数发送依赖项而不是在依赖类中实例化它们的想法?为什么后者会更可取?
我现在所能看到的是,它使得编写测试和模拟对象的隔离功能变得非常容易。当一个类有太多职责并直接指向需要重构的类时,这似乎也变得非常明显。如果我避免在我的 DI 容器以外的任何地方使用 new 关键字(核心 PHP 类除外),我是否会忘乎所以?