2011-10-31 22 views
0

我有一个游戏引擎类,由客户端程序和服务器程序共享。我有一个特定的功能updatePlayer(PlayerData data)它应该更新一个球员。 (PlayerData基本上是一个包数据类型。)最好的地方,把数据包类java

为了达到最佳标准,PlayerData类应该放在哪里?它应该是它自己的文件,网络包中还是静态数据包类的子类?通常,我会在C++中创建一个主命名空间(以我的项目命名),或者在我的网络类中定义该类,但是不能在java中的一个文件中定义多个类。

你会怎么做?

+1

我发现这是一个关于包结构主题的有趣阅读:http://www.javapractices.com/topic/TopicAction.do?Id=20 –

+0

有趣。我的游戏引擎有一个包(没有子包),但我目前的项目没有。也许我应该绕开组织的东西... – lowq

+1

一般建议避免默认包(即根本没有包)。一个好的包装结构会对组织你的代码有很大的帮助。在上面的一层,很好的划分子项目很重要。对于在客户端和服务器端共享的东西,你一定需要一个单独的库(即jar文件)和相关的类。拥有逐渐建立在彼此之上的独立项目还可以促进代码重用,并使代码构建更容易。 –

回答

1

为了达到最佳标准,PlayerData类应该放在哪里?

它应该绝对在它自己的文件中。 Java中嵌套/内部类通常是不必要的。

+0

好吧,好的。也许我应该使用序列化呢?我想这会让数据包之间的间歇变得困难。 – lowq

+0

序列化?这与“PlayerData类应该放到哪里?”有什么关系? –

+0

而不是一个PlayerData类。没关系。我已经想通了。谢谢! – lowq

1

我不确定在这种情况下你的意思是“数据包”。如果我的答案似乎不适用,请澄清。

但是一般来说,在Java中如果你有几个相关的类,你应该创建一个包并把相关的类放在那个包中。 Java中的“包”实际上只是一个包含所有相关.java文件的子目录。

不要创建一个子类来分组事物。这不是他们想要的。

如果您是来自另一种语言,为每个班级创建一个单独的文件似乎很痛苦。当然,这可能意味着你必须打开10个文件才能看到所有相关的东西。但另一方面,它可以很容易地找到正确的文件:只需查找具有该名称的文件即可。由于文件名和类名必须始终保持一致,因此我们必须从我们必须理解的事项清单中删除一个名称。我对VB有一些小小的烦恼,其中一个文件名和一个类名差别很大,这使我不得不多花几分钟时间才能弄明白。