c# – 从类中分解所有依赖关系的最简单,最快捷的方法

前端之家收集整理的这篇文章主要介绍了c# – 从类中分解所有依赖关系的最简单,最快捷的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
当使用旧代码并尝试创建测试时,我经常从类或方法中分离出依赖关系,因此我可以使用mocks为这些依赖关系编写单元测试.依赖关系通常以调用静态类和使用构造函数或该类中其他位置的新关键字创建的对象的形式出现.

在大多数情况下,静态调用是通过包装静态依赖关系来处理的,或者如果它的单一形式(或类似的)以StaticClass.Current.MethodCall()的形式通过其接口的依赖关系转到构造函数.

在大多数情况下,在构造函数中使用new关键字只是通过在构造函数中传递该接口来代替.

在大多数情况下,在类的其他部分使用new关键字,可以通过与上述相同的方法来处理,也可以根据需要创建一个工厂,并在构造函数中传递工厂的界面.

我总是使用Resharpers重构工具来帮助我所有这些突破,但大多数事情仍然是体力劳动(可能是自动化的),以及一些传统的类和方法可能是一个非常繁琐的过程.是否有任何其他重构插件和/或工具可以帮助我在这个过程中?是否有一个“在一个点击中突破这个类的所有依赖”重构工具? =)

对我来说听起来好像所有这些步骤对于许多开发人员来说是常见的,并且是一个常见的问题,在我尝试将插件编写到Resharper或CodeRush之前,我不得不问,因为有人可能已经尝试过了.

添加

反思下面的答案:即使你可能不想立即破解所有的东西(一次点击完全突破可能会导致更多的问题,而不是帮助)仍然能够简单地突破1个方法依赖关系,或轻松的1-2依赖关系,会有很大的不同.

此外,重构代码有一个“尝试看看发生什么只是为了了解一切如何适应在一起”的一个措施,一次点击总计将帮助该过程吨,即使你不检查该代码..

解决方法

我不认为有任何可以为您自动化的工具.使用遗留代码意味着 – 您一次只需几步操作即可知道代码.这些步骤通常是故意小的,以防止发生错误.通常你应该做的第一个更改是使代码可以测试的更改.编写测试后,您可以修改该部分代码,以便修复错误或实施RFC.

因为你应该采取小步骤,我相信很难使用重构工具来神奇地使你的所有依赖消失.使用遗留系统,您几乎不想一次性进行大的更改,因为破坏的风险(而不是由于缺乏测试而发现)的风险太大了.然而,这并不意味着重构工具在这种情况下是没有用的.反之;他们帮了很多

如果您还没有,我建议您阅读Michael Feathers的书籍Working Effectively with Legacy Code.它详细描述了一系列模式,可帮助您将遗留代码重构为更可测试的系统.

祝你好运.

猜你在找的C#相关文章