java包名称约定失败

Jas*_*n S 9 java naming-conventions

我刚刚提出Java SE的学习曲线,对于包名称的通常Java约定没有问题,例如 com.example.library_name_here.package_name_here

除了.

我一直注意到在一些相当知名的软件包中没有遵守这个规则.

  • JLine:jline.*
  • JACOB:com.jacob.*(没有jacob.com)
  • JNA :( com.sun.jna.*网站上的免责声明说明:Sun不赞助这个项目,即使包名(com.sun.jna)可能暗示其他情况.)

所以我想知道,是否存在通常的反向域名约定失效的情况,并且有很好的方法可以绕过它?我能想到的唯一案例是围绕域名所有权问题(例如,您更改了项目托管/域名,或者已经有一个众所周知的软件包对您的域名具有"擅自占用权",或者您对域的所有权运行out和别人把它搞砸了.

编辑:如果我使用我公司的域名,我们被收购或分拆,我们应该怎样处理包名?保持相同或重命名?(我认为从引用包的编译类失败的角度看重命名是不好的)

sbl*_*ndy 12

这是一个命名惯例.没有真正的要求,甚至没有期望包名映射到域名.

  • 然而,有一个非常强烈的建议. (2认同)

Mar*_*nor 5

一般的想法是两个组织不会拥有相同的域,因此使用域名作为包的一部分可确保没有命名空间冲突.但这只是一个建议.

有人在sun命名空间中拥有包是有充分理由的.如果他们提供公共API的实现,则通常需要在API的命名空间中实现这些类.


Ala*_*ger 2

包用于避免不同实体构建的组件之间的歧义和冲突。只要您遵循约定,并且没有人非法使用您的包命名空间部分,您就不必担心其他人使用了什么。