Visual Studio 重构:Remove 方法

Visual Studio refactoring: Remove method

提问人:kokos 提问时间:8/12/2008 更新时间:8/11/2012 访问量:7124

问:

是否有任何可以执行 remove 方法重构的 Visual Studio 外接程序?
假设您有以下方法:

Result DoSomething(parameters)  
{  
    return ComputeResult(parameters);  
}  

或者 Result 为 void 的变体。

重构的目的是将对 DoSomething 的所有调用替换为对 ComputeResult 的调用,或者如果 ComputeResult 不是方法调用,则使用参数的表达式。

Visual Studio 重构 方法

评论


答:

1赞 Lars Mæhlum 8/12/2008 #1

当涉及到这样的重构时,请尝试 ReSharper

只需右键单击方法名称,单击“查找用法”,然后重构,直到找不到任何引用。

正如 dlamblin 所提到的,最新版本的 ReSharper 可以内联一个方法。这应该可以满足您的需求。

1赞 Biri 8/12/2008 #2

我会用最简单的方式去做:

  1. 将 ComputeResult 方法重命名为 ComputeResultX
  2. 将 DoSomething 方法重命名为 ComputeResult
  3. 删除 DoSomething 方法(现在是 ComputeResult)
  4. 将 ComputeResultX 方法重命名回 ComputeResult

也许 VS 会因为上次重命名而显示一些冲突,但请忽略它。

通过“重命名”,我的意思是:覆盖方法的名称,然后在使用下拉列表(Shift + Alt + F10)并选择“重命名”。它将用新名称替换所有匹配项。

0赞 Rob Cooper 8/12/2008 #3

还可以右键单击方法名称,然后在 Visual Studio 中单击“查找所有引用”。

我个人只会做一个 + + 到CTRLSHIFTHFind & Replace

0赞 dlamblin 8/12/2008 #4

ReSharper 绝对是用于重构的 VS 2008 插件。但是,它不会一步到位地进行这种形式的重构;您必须将 DoSomething 重命名为 ComputeResult>,并忽略与实际 ComputeResult 的冲突。然后删除 DoSomething 的定义。这几乎是一步。

但是,也许它可以一步到位。如果我没看错的话。

1赞 Wedge 8/12/2008 #5

有一些产品可以向 Visual Studio 2005 和 2008 添加额外的重构选项,一些更好的产品是重构!ProResharper

至于 remove 方法,在规范的 Refactoring 书中有关于如何以增量方式执行此操作的描述。

就我个人而言,我遵循以下模式(假设编译和运行单元测试发生在每个步骤之间):

  1. 创建新方法
  2. 删除旧方法的主体,将其更改为调用新方法
  3. 搜索对旧方法的所有引用(右键单击方法名称并选择“查找所有引用”),将它们更改为对新方法的调用
  4. 将旧方法标记为 [Obsolete](对它的调用现在将在生成过程中显示为警告)
  5. 删除旧方法
6赞 Will Dean 8/12/2008 #6

如果我理解了这个问题,那么 Resharper 将这种“内联方法”称为“内联方法”——Ctrl - R + I

评论

2赞 Sasha 9/1/2017
没有 ReSharper 可以做到这一点吗?