【发布时间】:2011-07-11 00:59:35
【问题描述】:
情况如下: 我正在实现一个 4 人纸牌游戏。它有很多不同的规则,需要一些真正的智慧才能玩。于是我开始设计Card和Player等抽象类型以及它们之间的关系,然后我开始定义接口等等......
我正在努力重构的唯一类是 Player 类。我已经为这个类定义了一个简单的接口,它有 9 个方法(例如 play()、takeCard(Card) 等)所以我开始实现这些方法,然后问题就开始了......
我使用了很多逻辑和私有方法(例如 canCardEat()、dosTeamMateHaveCard(Card) 等)以使玩家尽可能聪明。当我写完该类的第一个工作版本时,该玩家在他的游戏中非常聪明,但是,我发现有超过 5000 行代码,并且恰好有 187 个私有方法,仅在这个类中! :(
我现在被这些数字吓坏了,所以我试图消除和合并一些私有方法,直到我总共达到 4500 个 LOC 和大约 160 个(私有)方法。仍然是一个庞大的班级。
我确实搜索了一个解决方案,但我得到的只是“将班级分成多个班级”。问题是我做不到。我想创建一个 LogicalBrain 类,并在 Player 类中使用它的一个实例作为实例变量,这样玩家实例就会要求逻辑大脑来完成这项工作。但是问题仍然存在,因为我必须将 Player 中大约 90% 的代码移动到新类中。
所以我的问题是:
- 如果你是我,你会如何重构 Player 类?
- 除了基于逻辑的代码和 ANN 之外,还有其他技术可以实现适合我情况的智能吗?
【问题讨论】:
-
您的代码是否按原样工作?您需要这样做有什么真正的原因吗,还是现在只是镀金?
-
@Jim,是的,它运行良好。我之所以要重构,是为了让类尽可能易于理解。由于目前的方法数量庞大,我需要一段时间才能找到我需要的方法。有时我什至创建了一个重复的方法,因为我“忘记”了它已经存在。
标签: refactoring