2012-12-25 23 views
1

我刚开始因为我的大学时代没有摸过它后的Java开发代码。到目前为止,我已经能够记住很多东西和一大堆读了起来,这一次仍然不是很清楚,我...从C++/C#到Java - 适当构建以“每类一个公共型”的规则

我遇到的问题是,很多书/例子/ tutorials/SE的帖子专注于更简单,更小的问题,这种类型的问题不会发生。

如果您在使用的类型(类,接口或两者)1000的一个项目...是最好的项目结构/布局约定简单地创建为每种类型的一个新的文件?从C++/C#的背景,这并不因为我已经习惯了一般具有一个或几个可能,这将定义整个项目的其余部分使用的接口文件不能很好地与我(没有?)坐下来了。而小的相关类通常会在一个文件中实现。

至于更具体的例子,我目前重构一个“事件”类目前正在处理15种不同的事件类型,都在同一个班。定义类的包还有其他事件处理类,如读者,作者和解析器。

如果我创建基本事件类和15个派生类,因为每个人都有稍微不同的属性/行为......这些都是我的选择:

  1. 15个新的文件全部添加到现有的包 - 看来我将会“污染”该文件包的数量将从6个减少到21个,并且正交性会被打破。
  2. 移动所有事件类放入自己的包,并让他们一起
  3. 创建一个文件,名为“Events.java”,并把所有15类嵌套静态类是一个主类的(本质“类活动”会成为一个名称空间) - 看起来谷歌用它们的协议缓冲区来做到这一点。

没有足够的Java经验,我不能决定哪种方法是可接受的标准。在一个目录中有1000个文件可以吗?我应该创建更多的包吗? (看看其他库/框架,看起来他们保持包数量最少)

在其他情况下,特别是当实施战略模式时,我会创建一个公共基类与一个静态工厂方法和一个数字非公开课只是为了我可以把它们保存在一个文件中。看来我只能做基于每个阶级统治和一切时间我做的这一个公共类型,这些“设计”的选择,这个问题回来......也许我只是不这样做是正确的。

+0

您的课程不必是“公开”的,例如,您可以将它们封装为私人。另外,如果你的事件集是固定的,你可以考虑使用'enum'。 – fge

+0

我有一百个左右的类,因为我使用了命令模式。如果它们彼此太不相同,这个类别的数量就成了问题。我肯定会反对创建内部类。创建内部类的唯一好理由是当它们真正绑定到外部类的(实现细节)时。提示:使用'pacakge-info.java'文件在JavaDoc中描述包的内容,并为用户指出最重要的类(包括旨在扩展功能的类)。 –

回答

0

必须克服“太多文件”的想法在来自其他语言的java程序员中很常见。

有些特殊情况下,您可能希望拥有一个公开的静态内部类(例如参见Map.Entry),但通常您想要坚持一个类(一个源文件)每个公共班级。

当逻辑上可以对子类进行子分组时,创建子包是很有意义的。不要害怕创建“太多”的软件包。

1

我会把他们自己的包中的所有15个事件子类放在他们自己的文件中。十五班并不多。我听说过有数千个(甚至数万个)类/文件的公司应用程序。

我在一个文件中看到几种公共类型的唯一时间是当它们是常量或枚举时, java.sql.Types中。你也可以将它们定义为枚举,然后打开它们,但是你会失去多态性。

相关问题