如何重构三个类中重复的代码?

How to refactor code duplicated in three classes?

在Visual Studio我有一个ASP.NET4.5的项目,语言是C#。在那个项目中,我发现了三个 类 (.cs),其中大部分代码都是相同的,包括字段和属性。

在这种情况下,减少和整合(重构)重复代码的好方法是什么?

这是一个有风险的重构过程,但是:

  • 如果您没有任何单元测试,您可能想从编写单元测试开始

  • 从class中选出一位作为主人

  • 重命名其他的导致编译器错误
  • 将客户端代码中的classes重命名为masterclass名称
  • 重新编译
  • 将其他两个 class 中的内容添加到母版中
  • 删除两个非masterclasses

如果您有 ReSharper(或其他一些质量重构工具)可用,此过程会更顺利。

但请注意...如果您没有设置单元测试,将很难确保看起来重复的代码实际上是重复的。仅通过目视检查很容易错过逻辑上的变化。