Java类名称应该重复包名吗?

时间:2012-11-14 11:16:30

标签: java naming-conventions

我正在考虑以下案例中Java的最佳实践:

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

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

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

问题是,我应该使用哪种命名约定?我看到两个选择:

  1. StatisticsDispatcher StatisticsEvent 如上所述。类名清楚表明了类的作用,但绝对名称有点模棱两可,比如com.example.project.statistics.StatisticsEvent。
  2. 调度程序事件。它更短,并且类的目的从其绝对名称清楚,如com.example.project.statistics.Dispatcher,但稍后在代码中这些名称可能与其他包的类不明确,即使不是,当我在文件的开头导入这些类,像“Dispatcher”和“Event”这样的类名是非常通用的,在文件的中间,它们与它们相关的内容并不明显。
  3. 在谷歌搜索java包和类命名约定时,我没有发现任何关于这一点。我担心第一个选项是正确的,但我真的不喜欢包名和类名的含糊不清,所以我想问你,其他程序员,你如何解决这些问题。

    提前致谢

3 个答案:

答案 0 :(得分:12)

我更愿意明确(也许是冗长)简洁(也许是含糊不清)。

你的例子了。 Dispatcher / Event是一个很好的。如果你运气不好,你最终必须完全确定每次出现这些问题以解决任何歧义。

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

答案 1 :(得分:5)

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

答案 2 :(得分:4)

我也肯定会选择那些含糊不清的名字。使用可能与其他软件包冲突的任何名称:

  • 导致代码的人类读者出现问题。如果我看到“事件”,那么我可能会认为它是一个常见的Java库,解决这个问题的唯一方法是回读import语句。
  • 会导致IDE出现问题。例如,Eclipse有时会“帮助”猜测最可能的包。列表,元素,属性等可以从您从未知道的包中导入!调试它可能会浪费大量的时间。