提问人:kokos 提问时间:8/12/2008 更新时间:8/11/2012 访问量:7124
Visual Studio 重构:Remove 方法
Visual Studio refactoring: Remove method
问:
是否有任何可以执行 remove 方法重构的 Visual Studio 外接程序?
假设您有以下方法:
Result DoSomething(parameters)
{
return ComputeResult(parameters);
}
或者 Result 为 void 的变体。
重构的目的是将对 DoSomething 的所有调用替换为对 ComputeResult 的调用,或者如果 ComputeResult 不是方法调用,则使用参数的表达式。
答:
当涉及到这样的重构时,请尝试 ReSharper。
只需右键单击方法名称,单击“查找用法”,然后重构,直到找不到任何引用。
正如 dlamblin 所提到的,最新版本的 ReSharper 可以内联一个方法。这应该可以满足您的需求。
我会用最简单的方式去做:
- 将 ComputeResult 方法重命名为 ComputeResultX
- 将 DoSomething 方法重命名为 ComputeResult
- 删除 DoSomething 方法(现在是 ComputeResult)
- 将 ComputeResultX 方法重命名回 ComputeResult
也许 VS 会因为上次重命名而显示一些冲突,但请忽略它。
通过“重命名”,我的意思是:覆盖方法的名称,然后在使用下拉列表(Shift + Alt + F10)并选择“重命名”。它将用新名称替换所有匹配项。
还可以右键单击方法名称,然后在 Visual Studio 中单击“查找所有引用”。
我个人只会做一个 + + 到CTRLSHIFTHFind & Replace
ReSharper 绝对是用于重构的 VS 2008 插件。但是,它不会一步到位地进行这种形式的重构;您必须将 DoSomething 重命名为 ComputeResult>,并忽略与实际 ComputeResult 的冲突。然后删除 DoSomething 的定义。这几乎是一步。
但是,也许它可以一步到位。如果我没看错的话。
有一些产品可以向 Visual Studio 2005 和 2008 添加额外的重构选项,一些更好的产品是重构!Pro 和 Resharper。
至于 remove 方法,在规范的 Refactoring 书中有关于如何以增量方式执行此操作的描述。
就我个人而言,我遵循以下模式(假设编译和运行单元测试发生在每个步骤之间):
- 创建新方法
- 删除旧方法的主体,将其更改为调用新方法
- 搜索对旧方法的所有引用(右键单击方法名称并选择“查找所有引用”),将它们更改为对新方法的调用
- 将旧方法标记为 [Obsolete](对它的调用现在将在生成过程中显示为警告)
- 删除旧方法
如果我理解了这个问题,那么 Resharper 将这种“内联方法”称为“内联方法”——Ctrl - R + I
评论