苦苦挣扎重构超过4000 LOC的Player类

时间:2011-07-11 00:59:36

标签: refactoring

情况如下: 我正在实施一个4人玩纸牌游戏。它有很多不同的规则,需要一些真正的智能才能发挥。所以我开始设计抽象类型,如Card和Player以及它们之间的关系,然后我开始定义接口等等。

我正在努力重构的唯一一个类是Player类。我为这个类定义了一个简单的接口,它有9个方法(例如play(),takeCard(Card)等等。)所以我开始实现这些方法,然后问题就开始了......

我使用了很多逻辑和私有方法(例如canCardEat(),doesTeamMateHaveCard(Card)等),以使玩家尽可能聪明。当我完成该课程的第一个工作版本时,播放器在他的剧本中非常聪明,但是我发现有超过5000行代码,而且只有187个私有方法,只有在这个类中! :(

我现在对这些数字感到震惊,所以我试图消除并合并一些私有方法,直到我达到总共4500个LOC和大约160个(私有)方法。仍然是一个庞大的阶层。

我确实在搜索解决方案,而我得到的只是“将课程分成多个班级”。问题是我不能。我想到了创建一个LogicalBrain类并使用它的实例作为Player类中的实例变量,因此播放器实例会要求逻辑大脑完成工作。但问题仍然存在,因为我必须将Player中大约90%的代码移动到新类中。

所以我的问题是:

  1. 如果你是我,你会怎么做才能重构Player类?
  2. 除了基于逻辑的代码和ANN之外,还有其他技术可以实现适合我情况的智能吗?

1 个答案:

答案 0 :(得分:1)

看看这个thread。如果您的代码是Java代码,那么有几种工具可以提供帮助。要寻找的一件事是彼此使用的方法集群和属性的子集。这些集群可以用作新类的基础。