你真的在反向域中使用java中的包命名吗?

Ale*_* S. 22 java namespaces

很久以前,我曾经想过,在java中,颠倒你拥有的用于包命名的域是愚蠢和尴尬的.

您在项目中使用哪个包命名?

Sco*_*eld 68

一旦你理解了约定存在的原因,就不应该感到愚蠢或尴尬.

这个方案做了两件重要的事情:

  • 您的所有代码都包含在其他任何人都不会碰撞的包中.您拥有自己的域名,因此它是孤立的.如果我们没有这个约定,许多公司将有一个"实用程序"包,包含类"StringUtil","MessageUtil"等.如果你试图使用其他人的代码,这些将很快发生冲突.

  • 它的"反向"性质使得类目录布局在顶层非常狭窄.如果你展开一个罐子,你会看到"com","org","net"等dirs,然后在每个组织/公司名称下面.

我们通常不会扩展jar,但在早期的Java开发中,这很重要,因为人们使用扩展的dir结构来实现applet.

但是,现在这很好,因为源代码目录结构具有非常"自上而下"的感觉.你从大多数通用(com,org,net ...)到较不通用(公司名称)到更具体(项目/产品/ lib名称)

  • 我非常喜欢这种方法,以至于经常让我想知道为什么域名是他们的顺序.主机上的路径来自general-> specific,但subdomain.domain.tld具体 - > general.不一致......必须重构...... (12认同)

Ben*_*ein 19

我实际上认为反向域名包命名是Java中更为出色的约定之一.


小智 5

如果它只是一个内部项目,并且代码不太可能被重用,那么我通常会使用简短的描述性名称.

但是,如果代码要在外部使用或在另一个项目中重用,那么我倾向于使用反向域方案.它确保不会有任何包名冲突.


Not*_*tMe 5

我自己也觉得挺傻的。com。部分真的只添加了 4 个额外的字符。另外,我认为在程序集/项目名称中使用公司名称也是错误的。我在太多的地方工作过,这些地方与另一家公司合并或简单地更名。

  • 为了使名称独一无二,我认为没有必要这样做。“com.mycompany.myapp”对我来说有点奇怪,没用。它可能是“mycompany.com.myapp”。这将解决唯一性的目的,也避免了怪异。+1 表示跳出那个形状的盒子。 (2认同)