在大多数情况下,静态调用是通过包装静态依赖关系来处理的,或者如果它的单一形式(或类似的)以StaticClass.Current.MethodCall()的形式通过其接口的依赖关系转到构造函数.
在大多数情况下,在构造函数中使用new关键字只是通过在构造函数中传递该接口来代替.
在大多数情况下,在类的其他部分使用new关键字,可以通过与上述相同的方法来处理,也可以根据需要创建一个工厂,并在构造函数中传递工厂的界面.
我总是使用Resharpers重构工具来帮助我所有这些突破,但大多数事情仍然是体力劳动(可能是自动化的),以及一些传统的类和方法可能是一个非常繁琐的过程.是否有任何其他重构插件和/或工具可以帮助我在这个过程中?是否有一个“在一个点击中突破这个类的所有依赖”重构工具? =)
对我来说听起来好像所有这些步骤对于许多开发人员来说是常见的,并且是一个常见的问题,在我尝试将插件编写到Resharper或CodeRush之前,我不得不问,因为有人可能已经尝试过了.
添加:
反思下面的答案:即使你可能不想立即破解所有的东西(一次点击完全突破可能会导致更多的问题,而不是帮助)仍然能够简单地突破1个方法依赖关系,或轻松的1-2依赖关系,会有很大的不同.
此外,重构代码有一个“尝试看看发生什么只是为了了解一切如何适应在一起”的一个措施,一次点击总计将帮助该过程吨,即使你不检查该代码..
解决方法
因为你应该采取小步骤,我相信很难使用重构工具来神奇地使你的所有依赖消失.使用遗留系统,您几乎不想一次性进行大的更改,因为破坏的风险(而不是由于缺乏测试而发现)的风险太大了.然而,这并不意味着重构工具在这种情况下是没有用的.反之;他们帮了很多
如果您还没有,我建议您阅读Michael Feathers的书籍Working Effectively with Legacy Code.它详细描述了一系列模式,可帮助您将遗留代码重构为更可测试的系统.
祝你好运.