Visual studio 如何重构:将一个类拆分为两个,通过接口进行通信
我刚刚开始我的第一次大规模重构,需要将一个(不幸的是很大的)类拆分为两个,然后只通过接口进行通信。(我的演示者原来是一个控制器,需要将GUI逻辑与应用程序逻辑分离)。在VisualStudio 2008和Resharper中使用C#最简单的方法是什么 我要尝试的是 a) 收集新类的成员并“提取新类” b) 清理由此产生的混乱 c) “提取接口” d) 追踪对该类的任何引用,并将其转换为接口引用 但是我以前从来没有这样做过,我想知道在我开始把所有东西拆开之前,是否有人知道任何好的提示或窍门。。。 谢谢 婴儿步 步骤1:使用Resharper出色的重构功能进行一个小改动。Visual studio 如何重构:将一个类拆分为两个,通过接口进行通信,visual-studio,visual-studio-2008,refactoring,resharper,Visual Studio,Visual Studio 2008,Refactoring,Resharper,我刚刚开始我的第一次大规模重构,需要将一个(不幸的是很大的)类拆分为两个,然后只通过接口进行通信。(我的演示者原来是一个控制器,需要将GUI逻辑与应用程序逻辑分离)。在VisualStudio 2008和Resharper中使用C#最简单的方法是什么 我要尝试的是 a) 收集新类的成员并“提取新类” b) 清理由此产生的混乱 c) “提取接口” d) 追踪对该类的任何引用,并将其转换为接口引用 但是我以前从来没有这样做过,我想知道在我开始把所有东西拆开之前,是否有人知道任何好的提示或窍门。。。
步骤2:测试(最好是单元测试)以确保代码仍然有效
步骤3:提交源代码管理 重复这3个步骤多次 若您正在进行“必须同时迈出一大步”的重构,那个么这可能行不通。在这种情况下,在迈出大步之前,尽可能多地进行小重构。小步骤 步骤1:使用Resharper出色的重构功能进行一个小改动。
步骤2:测试(最好是单元测试)以确保代码仍然有效
步骤3:提交源代码管理 重复这3个步骤多次
若您正在进行“必须同时迈出一大步”的重构,那个么这可能行不通。在这种情况下,在迈出大步之前,尽可能多地进行一些小的重构。称我为旧时尚,但就我个人而言,我只在技术任务(如重命名等)时使用您描述的自动化功能
对于所有其他重构,如提取接口等,我更喜欢手动进行。你会发现,你可以做更多的重构,通常代码会变得更干净。称我为旧时尚,但就个人而言,我只在技术任务(如重命名等)时使用你描述的自动化功能
对于所有其他重构,如提取接口等,我更喜欢手动进行。你会发现你可以做更多的重构,通常代码会变得更干净。首先,我要写一篇关于它的博客文章,谢谢你的想法 那么,让我们假设我们有:
class PresenterAndController
{
public void Control()
{
Present();
}
public void Present()
{
// present something
}
}
首先,我们需要将所有直接成员用法转换为间接用法,即使用字段限定它们。为此,请使用提取超类重构将Presenter部分提取到超类中:
internal class Presenter
{
public void Present()
{
// present something
}
}
class PresenterAndController : Presenter
{
public void Control()
{
Present();
}
}
在PresenterAndController中创建字段,该字段将委派一个成员,并使用Generate(Alt-Ins)创建委派成员。它们将恰好隐藏基本方法,因为它们是相同的:
internal class Presenter
{
public void Present()
{
// present something
}
}
class PresenterAndController : Presenter
{
private Presenter myPresenter;
public void Present() // hides base method
{
myPresenter.Present();
}
public void Control()
{
Present(); // it now references method from this type
}
}
从继承列表中删除Presenter,就完成了类的拆分。现在,您可以提取接口,在可能的情况下使用基类型,或者对其进行整理。这里的简短回答首先,我要写一篇关于它的博客文章,谢谢您的想法 那么,让我们假设我们有:
class PresenterAndController
{
public void Control()
{
Present();
}
public void Present()
{
// present something
}
}
首先,我们需要将所有直接成员用法转换为间接用法,即使用字段限定它们。为此,请使用提取超类重构将Presenter部分提取到超类中:
internal class Presenter
{
public void Present()
{
// present something
}
}
class PresenterAndController : Presenter
{
public void Control()
{
Present();
}
}
在PresenterAndController中创建字段,该字段将委派一个成员,并使用Generate(Alt-Ins)创建委派成员。它们将恰好隐藏基本方法,因为它们是相同的:
internal class Presenter
{
public void Present()
{
// present something
}
}
class PresenterAndController : Presenter
{
private Presenter myPresenter;
public void Present() // hides base method
{
myPresenter.Present();
}
public void Control()
{
Present(); // it now references method from this type
}
}
从继承列表中删除Presenter,就完成了类的拆分。现在,您可以提取接口,在可能的情况下使用基类型,或者对其进行整理。我从未使用过VisualStudio,但我发现Eclipse中的自动重构非常可靠,至少与我做同样的工作一样可靠。我从未使用过VisualStudio,但是我发现Eclipse中的自动重构非常可靠-至少和我做同样的工作一样可靠。我只有一条重要的建议-绝对确保可以恢复到启动重构之前的状态,而不会丢失任何东西。那就冲进去,去干吧。你可能最终不得不停下来重新开始,但这没什么可怕的(只要你听从我的一条建议)。做这件事你会学到很多东西。我只有一条重要的建议-绝对确保你可以恢复到开始重构之前的状态,而不会丢失任何东西。那就冲进去,去干吧。你可能最终不得不停下来重新开始,但这没什么可怕的(只要你听从我的一条建议)。做这件事你会学到很多东西。在做之前,先投资于源代码管理:学习Git。没有SCM的重构就像蒙着眼睛开车一样。在做之前,先投资于源代码管理:学习Git。没有SCM的重构就像蒙着眼睛开车