类别或部分类:解决"上帝对象"代码嗅觉的模式?

Dan*_*ark 4 c# design-patterns objective-c god-object

一个类太大而且变得难以使用.在Objective-C中,我很想用类别来打破课堂,但那时候:类别只是将一个装满太多垃圾的房子分成房间吗?我想,同样的问题适用于C#中的部分类.

在什么条件下可以使用类别来解决"类太大"的代码异味?什么时候不正确,班级真的需要"重组或分成小班?"

Skl*_*vvz 9

一个非常好的原则是SOLID原则.特别是"S"代表"单一责任"

单一责任原则

一个对象应该只有一个责任的概念.

当课程变得太大时,他们可能有太多的责任.您能否在班级的工作范围内定义两项或更多责任?如果是这样,请将其分为两个或更多类.然后,您可以使用façade复合模式将它们聚合回来.

换一种说法:

  • 根据单一责任原则,您在课堂上的代码应该分成不同的类
  • 原始的上帝类成为复合外观:它使用所有新类,向系统的其余部分公开相同的方法,但除了"转换"旧式的神级调用之外,它本身不实现任何功能.新式的SOLID调用.

这意味着,地区做完全没有解决你的问题,从面向对象的点.事实上,它们实际上适得其反,因为它们有助于隐藏问题.

另见Jeff Atwood的这篇文章:

http://www.codinghorror.com/blog/2008/07/the-problem-with-code-folding.html

CodingHorror区域