Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何重构:将一个类拆分为两个,通过接口进行通信_Visual Studio_Visual Studio 2008_Refactoring_Resharper - Fatal编程技术网

Visual studio 如何重构:将一个类拆分为两个,通过接口进行通信

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) 追踪对该类的任何引用,并将其转换为接口引用 但是我以前从来没有这样做过,我想知道在我开始把所有东西拆开之前,是否有人知道任何好的提示或窍门。。。

我刚刚开始我的第一次大规模重构,需要将一个(不幸的是很大的)类拆分为两个,然后只通过接口进行通信。(我的演示者原来是一个控制器,需要将GUI逻辑与应用程序逻辑分离)。在VisualStudio 2008和Resharper中使用C#最简单的方法是什么

我要尝试的是 a) 收集新类的成员并“提取新类” b) 清理由此产生的混乱 c) “提取接口” d) 追踪对该类的任何引用,并将其转换为接口引用

但是我以前从来没有这样做过,我想知道在我开始把所有东西拆开之前,是否有人知道任何好的提示或窍门。。。 谢谢

婴儿步

步骤1:使用Resharper出色的重构功能进行一个小改动。
步骤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的重构就像蒙着眼睛开车