很久以前,我曾经想过,在java中,颠倒你拥有的用于包命名的域是愚蠢和尴尬的.
您在项目中使用哪个包命名?
一旦你理解了约定存在的原因,就不应该感到愚蠢或尴尬.
这个方案做了两件重要的事情:
您的所有代码都包含在其他任何人都不会碰撞的包中.您拥有自己的域名,因此它是孤立的.如果我们没有这个约定,许多公司将有一个"实用程序"包,包含类"StringUtil","MessageUtil"等.如果你试图使用其他人的代码,这些将很快发生冲突.
它的"反向"性质使得类目录布局在顶层非常狭窄.如果你展开一个罐子,你会看到"com","org","net"等dirs,然后在每个组织/公司名称下面.
我们通常不会扩展jar,但在早期的Java开发中,这很重要,因为人们使用扩展的dir结构来实现applet.
但是,现在这很好,因为源代码目录结构具有非常"自上而下"的感觉.你从大多数通用(com,org,net ...)到较不通用(公司名称)到更具体(项目/产品/ lib名称)
我实际上认为反向域名包命名是Java中更为出色的约定之一.
如果它只是一个内部项目,并且代码不太可能被重用,那么我通常会使用简短的描述性名称.
但是,如果代码要在外部使用或在另一个项目中重用,那么我倾向于使用反向域方案.它确保不会有任何包名冲突.