OOP:我什么时候应该创建一个基类,什么时候不应该?

时间:2010-08-05 03:22:58

标签: php oop

我有一个有很多方法的大班(25,当然是相互关联的)。我不确定我应该拆分它而是创建一个派生类和基类。我没有看到将来继承自基地的另一个类的机会。那么将大班级分成较小部分的驱动因素是什么?

3 个答案:

答案 0 :(得分:2)

是的,有20多种方法,请将其分解。

有时它需要实验。

另一种选择是研究如何减少方法的数量。例如,您是否使用相同的方法(按名称)采用不同数量和/或类型的参数?在这种情况下,您可以查看这些签名之间的共性。这引出了另一个建议。

如果你有一个方法需要超过 - 比方说4 - 参数,那么看看它们,也许有一个选项可以将它们自己变成一个类。这可能会导致某些功能进入新类。

查看班级中的字段数(=成员变量)。您能否以这样的方式对方法进行分组,使它们主要在这些成员变量的子集上运行?也许您可以将这些方法及其操作的值转换为新类。

答案 1 :(得分:1)

  

将大班打成小部分的驱动因素是什么?

如果从单独的对象的角度来理解这一点,你应该这样做。如果您定义的所有方法确实对单个对象进行操作,并且在逻辑上无法将其视为与不同对象相关,则将它们保存在一个对象中。

  

我不确定我应该拆分它而是创建一个派生类和基类

不确定你的意思。当您需要一个从基类继承某些行为但修改或添加其他行为但希望您的基类保持原样的对象时,您将从基类派生。您不会继承只是为了将代码分解为可管理的块。

答案 2 :(得分:1)

“大类”是经典的“代码味”。见这里:http://sourcemaking.com/refactoring/large-class

当你有一个大班时,可能会或可能不会意味着你有一个很好的重构候选人。这就是“代码味道”......这可能是你的代码很好,但你可以肯定只是很难看。

遵循我链接的文章中给出的建议。即使认为它不是为PHP编写的,概念和策略仍然适用。