穷人小号DI似乎是做检验的一个无法验证的代码库遗留的一个很好的方式。 有没有办法,我忽略任何缺点? 我从来没有见过在重构遗留代码大量使用这种模式。 你认为S对于大规模重构/脱钩是否可行?
Answer 1:
正如你可能已经知道,穷人的DI有很多弊端。 例如,较高级别的部件仍依赖于较低级别的组件,而不是对抽象。 这使得它更难更换抽象,或装饰或拦截抽象而不引入整个代码库扫改变。
不过,穷人的DI仍然比没有DI更好,因为至少在类是可测试的。 我已经应用在过去的遗留代码库相同的方法。 我创建了一个新的组类和写单元测试他们。 我试图保持尽可能纯,并能远离穷人的DI远在大多数情况下,但顶部类我创建。 我不能介绍代码基地DI框架,让我顶班用穷人的DI,构建了完整的对象图。 我顶班,其中认为其中该系统我没有控制的其他部分实例化,所以这是一个很好的权衡,我班。
你认为S对于大规模重构/脱钩是否可行?
你只能做大规模重构,当你写了一集的单元测试要重构类。 为了能够写那些你需要DI测试。 如果你不能提出一个组成根,穷人的DI将是你最合适的,因为没有测试是不是一种选择。 在未来,你也许能更进一步并重构穷人的DI出来,但直到出现这种情况,我认为穷人的DI是你能得到的最好。
文章来源: poor man s dependency injection for legacy code