15

我正在考虑以下情况下 Java 的最佳实践是什么:

我的程序中有一个逻辑,我想放在一个单独的包中。

例如(我目前的情况),这是一个收集一些统计数据然后将它们发送到服务器的逻辑)。所以我的项目com.example.project下的包将被命名为com.example.project.statistics

包内会有一些类,在本例中是 StatisticsDispatcher(基本上是事件的容器和管理器)和 StatisticsEvent(应该计算到统计中的事件)。

问题是,我应该使用什么命名约定?我看到两个选项:

  1. 如上所述的StatisticsDispatcherStatisticsEvent 。类名清楚地表明了类的作用,但在绝对名称上有点冗长,例如 com.example.project.statistics.StatisticsEvent。
  2. 调度程序事件。它更短,并且类的目的从它的绝对名称中可以清楚地看出,例如 com.example.project.statistics.Dispatcher ,但稍后在代码中这些名称可能与其他包的类不明确,即使不是,当我在文件开头导入这些类,“Dispatcher”和“Event”之类的类名非常笼统,在文件中间,它们与什么相关并不明显。

在谷歌搜索 java 包和类命名约定时,我没有发现任何关于此的提及。恐怕第一个选项会是正确的,但我真的不喜欢包名和类名的冗长,所以我想问一下其他程序员,你如何解决这种情况。

提前致谢

4

3 回答 3

13

我宁愿明确(也许冗长)而不是简洁(也许模棱两可)。

你的例子重新。Dispatcher/Event是一个很好的。如果你不走运,你最终将不得不完全限定这些的每一次出现以解决任何歧义。

在这种情况下,您最终会得到大量冗长的代码,或者重组代码以使冲突的类不共存(冲突实际上可能表明不相关的实体共存,但这是另一个讨论)

于 2012-11-14T11:19:28.927 回答
5

我肯定会选择第一个,即 StatisticsDispatcher 和 StatisticsEvent,因为单独使用 Dispatcher 和 Event 这两个词可能意味着很多事情(尤其是在 Java EE 中)。

于 2012-11-14T11:22:44.097 回答
4

我也肯定会选择不那么模棱两可的名字。使用可能与其他包冲突的任何名称:

  • 给代码的人类阅读者带来问题。如果我看到“事件”,那么我可能会认为它是一个常见的 Java 库,解决此问题的唯一方法是回读该import语句。
  • causes problems for IDEs. Eclipse, for example, sometimes "helpfully" guesses the most likely package. List, Element, Attribute, etc. may be imported from packages you never even knew existed! And it can be a surprising amount of wasted time to debug this.
于 2012-11-14T12:20:27.443 回答