【问题标题】:How can I refactor this unfortunate partial class?我该如何重构这个不幸的部分类?
【发布时间】:2012-05-24 13:42:41
【问题描述】:

我已经开始使用 Linq2Sql 数据访问层,它有一个“God Class”部分类,另一个部分是生成的 EntitySet。这个分部类做了各种各样的事情,比如将自己序列化为 Json,进行数据库调用和各种实用功能,以及定义许多便利属性和方法来与它“分部”的模型进行交互。

由此带来的副作用是无法序列化,以及“God Class”反模式的所有其他问题。

拆分这些类以获得更好的关注点分离的良好设计模式是什么?我想强调易于重构,因为这个类遍布整个应用程序。

【问题讨论】:

  • 马上要说的一点是,你应该遵守 SOLID 原则。确保你实现了 S - 单一职责 - 但是你分开确保序列化由一个类处理,数据库调用由另一个类处理。
  • +1 @SachinKainth,SOLID 原则可以在这里找到:en.wikipedia.org/wiki/SOLID

标签: design-patterns refactoring partial-classes


【解决方案1】:

与大多数遗留代码的重构一样,我建议引入一个中间适配器类(请参阅adapter pattern),开始时仅代表旧功能。然后随着新代码的引入,包装器可以开始将工作委托给新代码。直到最终可以完全移除包装器。

【讨论】:

  • +1 因为这实际上告诉了 OP 还不知道的东西。
【解决方案2】:

另外,我想说你应该尽可能地编写测试(单元或集成)来发现/验证类的各个部分的功能,然后当你重构时,你会确保你没有破坏任何的功能,因为您将有一组回归测试可以依靠。

【讨论】:

  • 我同意在进行这种重构以保证(尽可能多地通过测试)更改前后的行为时,拥有一个好的测试套件是绝对重要的。
猜你喜欢
  • 2011-03-09
  • 2022-01-15
  • 2019-04-23
相关资源
最近更新 更多