实际上这是完全理论上的问题。但有趣的是,为什么java规范不允许在包中使用大写字母字母并导致类似这样的写法:
com.mycompany.projname.core.remotefilesystemsynchronization.*
而不是
com.myCompanyName.projName.core.remoteFileSystemSynchronization.*
答案 0 :(得分:90)
直接来自Oracle Docs
包名称全部小写,以避免与 类或接口的名称。
答案 1 :(得分:31)
但有趣的是,为什么java规范不允许在包中使用大写字母字母并导致写出这样的内容:
规范允许它就好了。它只是一个约定来使用全小写。
正如gtgaxiola所说,这确实避免了与类型名称的冲突......在.NET命名约定中,这个发生,导致你do not name a class the same as its namespace的建议。当然,使用camelCase包可以完全避免碰撞。
我怀疑现实是在创建包命名约定时没有仔细考虑。就个人而言,我很少发现这是一个问题 - 如果我最终看到一个包含一个" remotefilesystemsynchronization"那么资本化并不是我所关注的主要问题:)
答案 2 :(得分:0)
它只是另一个惯例 - 人们可能会问为什么类名始终必须以Capital开头,或者方法名称以小案例开头,然后是驼峰式的。 Java 没有强制您使用这种方式。只是一组带下划线的规则可以帮助庞大的社区,因为Java开发人员可以为大多数遵循约定的代码编写容易理解的代码。
没有明确的理由可以这样分配。在编写约定时,它恰好感觉好。但是在编写约定之前肯定会有指南。我并不是说它是一个异想天开的作品。指南可能只是通过查看我们应该能够告诉它的类,方法或包以及所有重要的元素 - 在约定中它已经实现。