为什么Java包名称应该是小写的?

其实这是完全的理论问题。 但是为什么java规范不允许在包中使用大写字母的字母,并且导致这样写:

com.mycompany.projname.core.remotefilesystemsynchronization.* 

代替

 com.myCompanyName.projName.core.remoteFileSystemSynchronization.* 

直接从Oracle Docs

包名称全部写成小写,以避免与类或接口的名称冲突。

但是为什么java规范不允许在包中使用大写字母的字母,并且导致这样写:

规范允许它很好。 这只是一个使用全小写的约定

正如gtgaxiola所说,这确实避免了与types名称的冲突……在.NET命名约定中,这确实发生了,导致build议您不要将名称命名为与其命名空间相同的类 。 当然,使用camelCase包将完全避免碰撞。

我怀疑现实是创build包命名约定时没有充分考虑它。 就个人而言,我很less发现它是一个问题 – 如果我最终看到一个包含“remotefilesystemsynchronization”元素的包,那么大小写不是我所关心的主要内容:)

它只是另一个约定 – 有人会问,为什么类名始终以Capital开头,或者方法名以小写字母开头,然后是骆驼壳。 Java 不会强迫你使用这种方式。 它只是一套强调的规则可以帮助广大的社区作为Java开发人员为大多数遵循约定的人编写容易理解的代码。

没有明确的理由可以这样分配。 在编写这个约定的时候,它感觉很好 。 但是在编写公约之前,指导方针肯定会在那里。 我不是说它是一个异想天开的工作。 指导方针可能就是通过看到要素,我们应该能够判断它的类别,方法或包裹以及所有重要的是 – 在已经实现的惯例中。