组织java代码的最佳方式...多个项目或按包分开?

时间:2014-06-29 16:06:07

标签: java eclipse project game-engine packages

我即将在eclipse中开始一个个人JAVA项目,我和朋友在这里创建游戏服务器,游戏引擎和基于现有纸牌游戏的游戏。游戏服务器将是最后的,但是现在我想专注于构建卡游戏引擎,然后是游戏本身。

在学校,我们只会创建像gameEngine.whatever这样的软件包,然后不同的游戏就会出现在像game.gameName.whatever这样的软件包中。我正在考虑将游戏引擎作为自己独立的项目,然后让游戏成为一个单独的项目,而不是将它们全部放在一个项目中并根据包将它们分开,就像我在学校里完成的那样。在我的实习中,我们有多个项目一起工作,但根本没有在课程中提到过。

与其他方式相比,它有什么不同吗?或者他们基本相同?谢谢!

3 个答案:

答案 0 :(得分:4)

如果我理解你的情况,你现在不应该过多担心代码组织。当然,在某些项目中,事先明确了哪些内容。在许多情况下并非如此。

在您的情况下,当您开始实施时,您将更清楚地了解要采取的方向和组织。使用像eclipse这样的IDE的一个优点是,您可以在稍后阶段重构代码(包括代码,甚至跨项目移动包/类)。对于eclipse,代码不仅仅是文件/目录。它正在查看解析树,因此可以让您安全地移动许多精细的东西 - 在包或项目中移动代码是它可以做的最微不足道的事情。

只关注你必须做的事情,并尝试用真实的东西取得进步。如果您不得不担心多个项目,您将知道何时开始。我建议先从以下内容开始:

  • 暂时创建一个项目。首先找到一个标准和唯一的包前缀。假设你决定选择像“org.abc”这样的东西(只是一个不好的例子)

  • 现在开始处理您的项目。随着您不断添加课程,请专注于组织包装。随时随地添加包。比如..

    • org.abc.game.engine

    • org.abc.game.util

    • org.abc.game.games.mario

    • org.abc.game.engine.phy

    • org.abc.game.server

    • org.abc.game.common

    • ...

在您想要的一段时间后,您可以创建新项目。例如,您可以决定

  • 将当前项目称为 GameMario

  • 将整个org.abc.game.common和org.abc.game.util与一些文件一起移动到名为 GameCommon 的项目中。两个项目中可以存在相同的包(在许多情况下也可以)

  • 将org.abc.game.engine,org.abc.game.server及其所有子包移至新项目 GameServer ,并继续在该项目中添加游戏服务器代码

  • GameMario GameServer 都会对 GameCommon

  • 产生项目依赖性

答案 1 :(得分:2)

如果“X”可以单独使用,或者有(或可能)至少2个使用“X”的不同项目,我会说你应该为“X”单独创建一个项目。否则,包裹没问题。

答案 2 :(得分:1)

使用多个项目而不是包具有一些优点 您可以单独编译,测试和运行服务器,客户端和引擎。 我知道这也适用于包装,但它会更清洁。如果像git中那样存在代码协作,那么管理起来会更容易。

如果您怀疑将引擎用作客户端中的模块,则可以始终将一个项目用作另一个项目的库。这样,您可以将工作分开,但在开发游戏时可以毫不费力地使用这些功能。

另一方面,存在一些缺点。您的代码将是三个独立的实体。因此,如果您习惯于在任何地方移动一个jar文件并向单个类发出参数,告诉它运行哪个模块,则此项目方法可能无效。

这一切都取决于您的应用和您的风格。如果我是你,我会做三个项目。

祝你好运。