为什么java包名称应该小写?

Ole*_*nko 56 java programming-languages naming-conventions package

实际上这是完全理论上的问题.但有趣的是,为什么java规范不允许在包中使用大写字母字母并导致类似这样的写:

com.mycompany.projname.core.remotefilesystemsynchronization.*
Run Code Online (Sandbox Code Playgroud)

代替

com.myCompanyName.projName.core.remoteFileSystemSynchronization.*
Run Code Online (Sandbox Code Playgroud)

gtg*_*ola 95

直接来自Oracle Docs

包名称全部用小写编写,以避免与类或接口的名称冲突.

  • 包名称也与文件系统目录一起使用,文件系统目录通常对字符大小写本身有限制. (11认同)
  • 谁使用没有大写支持的文件系统?你有ext3,NTFS或Mac的东西,我们不再是九十年代了 (7认同)
  • "避免与类名冲突" - >你不能将com.site.myName与类名混淆,因为在类的情况下,它将是com.site.MyName(以大写字母开头).所以没有逻辑支持"myname"方法.我认为"myName"更好,因为它更容易阅读.例如"com.marvel.movi​​es.gardiansofthegalaxy" (3认同)
  • 在您的情况下,AppName 不是 @joro 所指示的小驼峰(在您的情况下,我可能会扼杀创建 AppName 的人,就像我想扼杀我们公司中创建以小写字母开头的类的人一样......) . 我是开发人员的一部分,认为 com.pany.app.tableOfContents 比 com.pany.app.tableofcontents(或 com.pany.app.toc)更容易阅读。而 com.pany.app.table.of.contents 甚至更糟...... (2认同)

Jon*_*eet 31

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

规范允许它很好.这只是一个使用全小写的惯例.

正如gtgaxiola所说,这确实避免了与类型名称的冲突......在.NET命名约定中确实会发生这种情况,从而导致建议您不要将类命名为与其名称空间相同.当然,使用camelCase包可以完全避免碰撞.

我怀疑现实是在创建包命名约定时没有仔细考虑.就个人而言,我很少发现这是一个问题 - 如果我最终看到一个包含"remotefilesystemsynchronization"元素的包,那么大写不是我要关注的主要内容:)