过大的类
症状
如果单个类做了太多事情,其内往往包含了太多的实例变量,方法,代码行数,换句话说它可能拥有了太多的职责(单一职责原则)。
病因
类通常开始都是很小的。但随着时间的推移,新功能的增加,它们会变得臃肿。 与长方法的情况一样,程序员通常会在现有的类中放置一个新的特性,而不是为该特性创建一个新的类。
导致的健康问题
一个类如果过大那么Duplicated Code可能就出现了, 因为其他类可能也会有相同的实例变量,方法等,并且类如果有太多的职责的话,那么就要花更多的时间去了解清楚哪些代码是相关的,这样无形中增加了维护成本和添加新需求发生bug的几率。
治疗
如果一个类中拥有很多相似的字段,而且方法又都只是和某些实例变量有关系
尝试运用 Extract Class 把这些有关系字段和方法提炼到另一个类
IntelliJ IDEA 练习视频-
如果你发现类中的某些方法只被一部分实例用到,其它没有用到
尝试运用 Extract Class 或者 Extract SubClass 这两种方式的抉择就是委托和继承之间的抉择,Extract SubClass 通常更容易,但它也有限制:一旦对象创建完成,你无法再改变对象行为。而委托更灵活一些(策略模式)。
IntelliJ IDEA 练习视频
康复
开发者不需要记住太多的实例变量,方法,只需要记住哪个类所具备的职责就可以。
重构后的类在一定程度上也避免了代码和功能的重复(Duplicated Code)