如何分手大班

gee*_*jay 2 oop

我有一个很大的Shape类,其中的实例可以(应该)能够做很多事情.我有许多继承自这个类的"域"形状类,但除了绘制自己之外,不提供任何不同的功能.

我已经尝试了子类的Shape类,但是所有的"域"对象仍然会继承这个子类.

我如何分手?(它是300文本行,C#)

Tim*_*Tim 8

300线对我来说似乎是合理的.

如果您真的想要更好的帮助,请发布代码


Tim*_*art 7

一些想法(更像是启发式):

1)检查班级的领域.如果一组字段仅用于少数方法,则可能表示该组字段和使用它的方法可能属于另一个类.

2)假设一个名称很好的类,将类的名称与类实际执行的名称进行比较.如果您发现的方法超出了您对类名称的期望,那么这可能表明这些方法属于不同的类.例如,如果您的类表示客户,但也打开,关闭和写入日志文件,请将日志文件代码分解为Logger类.另请参阅:单一责任原则(PDF)以获取一些有趣的想法.

3)如果某些方法主要在另一个类上调用方法,那么这可能表明这些方法应该移动到他们经常使用的类(例如Feature Envy).

小心:就像他们说的那样,分手很难做到.如果在分类时存在风险,您可能需要进行一些测试,以便在重构时知道自己没有破坏任何东西.考虑阅读" 有效使用遗留代码 "和" 重构 "一书.