也许这是一个愚蠢的问题,并且有很简单的方法可以做到这一点。
请考虑以下代码段:
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)。