R#extract方法和替换出现次数

时间:2014-04-05 15:33:32

标签: c# visual-studio-2012 refactoring resharper

也许这是一个愚蠢的问题,并且有很简单的方法可以做到这一点。

请考虑以下代码段:

Page firstPage = Controller.Get(Pages.FIRST_NAME);
if (firstPage != null)
{
    PagePath pagePath = firstPage.GetFullPath();
    string pagePathName = Path.Render(pagePath);
    buffer.AppendFormat("Path: {0} .", pagePathName);
}
Page secondPage= Controller.Get(Pages.SECOND_NAME);
if (secondPage != null)
{
    PagePath pagePath = secondPage.GetFullPath();
    string pagePathName = Path.Render(pagePath);
    buffer.AppendFormat("Path: {0} .", pagePathName);
}

if (includeHeader)
{
    Page page = Controller.Get(Pages.HEADER_NAME);
    if (page != null)
    {
        PagePath pagePath = page.GetFullPath();
        string pagePathName = Path.Render(pagePath);
        buffer.AppendFormat("Path: {0} .", pagePathName);
    }
}
if (includeFooter)
{
    Page page = Controller.Get(Pages.FOOTER_NAME);
    if (page != null)
    {
        PagePath pagePath = page.GetFullPath();
        string pagePathName = Path.Render(pagePath);
        buffer.AppendFormat("Path: {0} .", pagePathName);
    }
}

我想重构这段代码,因为它有重复的代码块。 所以首先我要使用"提取方法"在片段上:

PagePath pagePath = page.GetFullPath();
string pagePathName = Path.Render(pagePath);
buffer.AppendFormat("Path: {0} .", pagePathName);

很明显,这段代码有3个像这样的其他代码块。如果您使用"在解决方案中找到匹配的克隆"你得到1个完全匹配和2个强匹配。

但是当我应用提取方法时,它只提取所选代码,而不是所有出现的代码。我想改变所有事件。

是否有可能不是手动自动执行此操作?最终它是重构工具,因此它应该自行完成。

我有R#8.2和VS 2012。

我试图找到有关此问题的任何信息,并发现此主题已于2006年在R#社区中讨论(Enhancement to Extract method - replace occurances of extracted code)。

0 个答案:

没有答案
相关问题