Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
组织java代码的最佳方法。。。多个项目还是按包分开?_Java_Eclipse_Project_Game Engine_Packages - Fatal编程技术网

组织java代码的最佳方法。。。多个项目还是按包分开?

组织java代码的最佳方法。。。多个项目还是按包分开?,java,eclipse,project,game-engine,packages,Java,Eclipse,Project,Game Engine,Packages,我将在eclipse中开始一个个人JAVA项目,在这个项目中,我和一个朋友创建了一个游戏服务器、游戏引擎和一个基于现有纸牌游戏的游戏。游戏服务器将排在最后,但现在我想集中精力构建纸牌游戏引擎,然后是游戏本身 在学校里,我们只需要创建像gameEngine.which这样的软件包,然后不同的游戏就会出现在像game.gameName.which这样的软件包中。我在考虑让游戏引擎成为一个独立的项目,然后让游戏也成为一个独立的项目,而不是像我在学校做的那样,把它们都放在一个项目中,并根据软件包将它们分

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

在学校里,我们只需要创建像
gameEngine.which
这样的软件包,然后不同的游戏就会出现在像
game.gameName.which
这样的软件包中。我在考虑让游戏引擎成为一个独立的项目,然后让游戏也成为一个独立的项目,而不是像我在学校做的那样,把它们都放在一个项目中,并根据软件包将它们分开。在我的实习期间,我们有多个项目一起工作,但在课堂上根本没有涉及到这一点


这样做和那样做有什么区别吗?或者它们基本上是等价的?谢谢

如果“X”可以单独使用,或者至少有(或可能有)两个不同的项目使用“X”,那么我认为您应该为“X”创建一个单独的项目。否则,一个包就可以了。

使用多个项目而不是包有一些优点
您可以分别编译、测试和运行服务器、客户端和引擎。 我知道这在包装上也是可能的,但会更干净。如果有像git中那样的代码协作,那么管理起来就会容易得多

如果您对在客户机中将引擎用作模块持怀疑态度,则始终可以将一个项目用作另一个项目的库。这样,您可以将工作分开,但在开发游戏时可以轻松地使用这些功能

另一方面,也有一些缺点。您的代码将是三个独立的实体。因此,如果您习惯于到处移动一个jar文件,并向单个类发出参数,告诉它运行哪个模块,那么这种项目方法可能不起作用

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


祝你好运。

如果我正确地理解了你的情况,那么此时你不应该太担心代码组织。当然,在一些项目中,我们可以事先清楚地了解项目的进展情况。在许多情况下并非如此

在您的情况下,当您开始实施时,您将更加清楚地了解要采取的方向和组织。使用像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,并继续在该项目中添加游戏服务器代码

  • GameMarioGameServer都将依赖于GameCommon


因此,对于多个项目而不是软件包,进行这种类型的工作基本上是首选的,或者说是常见的。。。每个项目都没有优点或缺点?通常项目会做一些被称为“模块”的事情,这是一些IDE支持的。老实说,我只是更喜欢把单独的程序完全放在单独的项目中,这样整个过程就容易多了。(我个人也建议不要使用eclipse)@clanier9正如我所说的,这取决于你想如何使用它。我不认为这只是一种偏好,因为一旦你想使用一个项目(在另一个项目中)的软件包,你就必须依赖整个项目,其中可能包含很多你不需要的东西(在其他软件包中)。软件包相对于模块的好处对于这个网站来说太广泛了。它们是非常不同的,有非常不同的好处。我建议进一步阅读。我试图自己查找信息,但空手而归。。。而且,正如我提到的,我的学校没有讨论这类事情。我将尝试查找软件包和模块。如果您能提供一些阅读建议,我将不胜感激。