1

我刚开始用 Java 开发,因为我从大学时代就没有接触过它。到目前为止,我已经能够记住很多事情并阅读了一大堆,这对我来说仍然不清楚......

我遇到的问题是,很多书籍/示例/教程/SE 帖子都专注于不会出现此类问题的更简单、更小的问题。

如果您有一个具有 1000 种类型(类、接口或两者)的项目......是为每种类型简单地创建一个新文件的最佳项目结构/布局约定吗?来自 C++/C# 背景,这对我来说不太合适(还没有?),因为我习惯于通常有一个或可能很少的文件来定义整个项目其余部分使用的接口。小的相关类通常会在一个文件中实现。

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

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

  1. 15 个新文件全部添加到现有包中 - 似乎我会“污染”该包,因为文件数量将从 6 个变为 21 个,并且正交性会中断。
  2. 将所有事件类移动到它们自己的包中并将它们放在一起
  3. 创建一个名为“Events.java”的文件,并将所有 15 个类作为该主类的嵌套静态类(本质上“类事件”将成为一个命名空间) - 谷歌似乎使用他们的协议缓冲区来做到这一点。

由于没有足够的 Java 经验,我无法确定哪种方法是公认的标准。可以在一个目录中有 1000 个文件吗?我应该创建更多包吗?(查看其他库/框架,似乎它们将包的数量保持在最低限度)

在其他情况下,特别是在实现策略模式时,我会创建一个带有静态工厂方法的公共基类和一些非公共类,这样我就可以将它们保存在一个文件中。似乎我只是根据每个班级规则的一个公共类型以及我这样做的所有时间做出这些“设计”选择,这个问题又回来了......也许我只是做得不对。

4

2 回答 2

1

我会将所有 15 个事件子类放在他们自己的包中,在他们自己的文件中。十五节课也不算多。我听说过企业应用程序有数千个(甚至可能是数万个)类/文件。

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

于 2012-12-25T00:40:20.167 回答
0

不得不克服“文件太多”的想法在从其他语言转向 java 的程序员中很常见。

在某些特殊情况下,您可能希望拥有一个公开的静态内部类(例如,参见 Map.Entry),但通常,您希望每个公共类都使用一个类(一个源文件)。

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

于 2012-12-25T00:46:51.390 回答