Visual Studio重构:Remove方法
是否有任何Visual Studio加载项可以执行remove方法重构?
假设我们具有以下方法:
Result DoSomething(parameters) { return ComputeResult(parameters); }
或者结果为空的变体。
重构的目的是将所有对DoSomething的调用替换为对ComputeResult的调用,或者在ComputeResult不是方法调用的情况下使用对参数的表达式进行替换。
解决方案
回答
当涉及到这样的重构时,请尝试使用ReSharper。
只需右键单击方法名称,单击"查找用法",然后进行重构,直到找不到任何引用。
正如dlamblin所提到的,最新版本的ReSharper可以内联方法。那应该做我们所需要的。
回答
我会以最简单的方式做到这一点:
- 将ComputeResult方法重命名为ComputeResultX
- 将DoSomething方法重命名为ComputeResult
- 删除DoSomething方法(现在为ComputeResult)
- 将ComputeResultX方法重命名回ComputeResult
也许VS由于最后一次重命名会显示一些冲突,但是请忽略它。
"重命名"的意思是:覆盖方法的名称,并在使用下拉菜单(Shift + Alt + F10)后选择"重命名"。它将用新名称替换所有出现的事件。
回答
我们还可以右键单击方法名称,然后在Visual Studio中单击"查找所有引用"。
我个人只会做一个CTRL + SHIFT + H来查找和替换。
回答
ReSharper绝对是用于重构的VS 2008插件。但是,它不会一步一步地进行这种形式的重构。我们将必须重构->将DoSomething重命名为ComputeResult,并忽略与实际ComputeResult的冲突。然后删除定义为DoSomething。这几乎是一步。
但是,也许可以做到这一点。如果我没看错的话。
回答
有一些产品可以在Visual Studio 2005和2008中添加额外的重构选项,其中一些更好的产品是Refactor! Pro和Resharper。
至于remove方法,在规范的重构书中有关于如何逐步执行此操作的描述。
就个人而言,我遵循以下模式(假设在每个步骤之间都进行了编译和运行单元测试):
- 创建新方法
- 删除旧方法的主体,将其更改为调用新方法
- 搜索对旧方法的所有引用(右键单击方法名称,然后选择"查找所有引用"),将其更改为对新方法的调用
- 将旧方法标记为过时
- 删除旧方法
回答
如果我理解这个问题,那么Resharper会将此方法称为"内联方法" Ctrl + R + I