情况如下: 我正在实施一个4人玩纸牌游戏。它有很多不同的规则,需要一些真正的智能才能发挥。所以我开始设计抽象类型,如Card和Player以及它们之间的关系,然后我开始定义接口等等。
我正在努力重构的唯一一个类是Player类。我为这个类定义了一个简单的接口,它有9个方法(例如play(),takeCard(Card)等等。)所以我开始实现这些方法,然后问题就开始了......
我使用了很多逻辑和私有方法(例如canCardEat(),doesTeamMateHaveCard(Card)等),以使玩家尽可能聪明。当我完成该课程的第一个工作版本时,播放器在他的剧本中非常聪明,但是我发现有超过5000行代码,而且只有187个私有方法,只有在这个类中! :(
我现在对这些数字感到震惊,所以我试图消除并合并一些私有方法,直到我达到总共4500个LOC和大约160个(私有)方法。仍然是一个庞大的阶层。
我确实在搜索解决方案,而我得到的只是“将课程分成多个班级”。问题是我不能。我想到了创建一个LogicalBrain类并使用它的实例作为Player类中的实例变量,因此播放器实例会要求逻辑大脑完成工作。但问题仍然存在,因为我必须将Player中大约90%的代码移动到新类中。
所以我的问题是: