Visual Studio重构:Remove方法

时间:2020-03-05 18:39:06  来源:igfitidea点击:

是否有任何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