这更像是一个设计问题,而不是C ++问题。
我正在用C ++开发Texas Hold'Em扑克游戏。到目前为止,我已经编写了一个HandChecker
模块,负责根据他的底牌和社区卡确定一名球员的最佳牌局。我决定将其移到单独的HandChecker
项目中。 HandChecker
取决于我在主项目中编写的Hand
和Card
类。在当前状态下,它需要主项目和HandChecker
项目之间的循环依赖。
构建此项目的最佳方法是什么?我应该将Hand
和Card
类移到自己独立的项目中吗?
答案 0 :(得分:1)
如果Hand和HandChecker相互依赖,那么将Hand移动到另一个项目将没有任何区别。您的选择是:
删除循环依赖项。我无法确切地告诉你如何做到这一点,但检查这两个类,看看他们互相称呼的地方,并问问自己为什么他们按照他们的方式工作。你能将一些功能从一个类移到另一个类,以确保任何剩余的依赖是单向的吗?你能介绍一下他们都依赖的第三堂课吗?你能为HandChecker引入一个抽象基类,以便打破对其具体实现的编译时依赖性吗?
删除依赖项是最好的方法,但您也可能不需要首先将它们分成单独的项目。单独的项目对于从主项目(扑克游戏)中拆分逻辑代码块(例如XML读取器)以制作可重用的库(也可用于(例如)您的帐户管理应用程序)是有用的。 HandChecker和Hand声音从根本上相关(没有另一个没有多大用处),所以也许它们应该在同一个项目中。你可能需要将它们作为单独项目的唯一时间是,如果你想能够插入不同的HandCheckers来创建不同的纸牌游戏 - 在这种情况下你可能需要一个抽象的基类。