就在你说这是重复之前,我已经看到了其他问题,但我仍然想发布这个。
所以我正在阅读 Thinking in Java -Bruce Eckel 这篇文章是关于小写命名约定的:
In Java 1.0 and Java 1.1 the domain extensions com, edu, org, net, etc., were capitalized by convention, so the library would appear: NET.mindview.utility.foibles. Partway through the development of Java 2, however, it was discovered that this caused problems, so now the entire package name is lowercase.
我遇到的问题是“发现这导致了问题”。什么问题?这不可能是名称冲突,因为域名全部大写,对吧?
我在 Google 上搜索过这个,但我得到的是:Why should java package name be lowercase? :
Package names are written in all lower case to avoid conflict with the names of classes or interfaces.
我还搜索了 java package lowercase convention changed all-caps domain name
但无济于事。
那么有人知道他们为什么中途更改命名约定吗?
最佳答案
只是一个大胆的猜测,并非基于任何可靠的来源:包名称与文件系统目录结构相关。一个包含 NET
的包名可能会导致问题,例如来自区分大小写的文件系统的源代码树被复制到/用于不区分大小写的文件系统,并且出于某种原因目录名称从“NET”更改为等效的“net”。
相反的方向也有同样的处理:从包名称解析文件系统路径,我可以想象这可能会导致一些歧义或至少让用户感到惊讶的情况。
我可以看到这在某些情况下会造成混淆。
另一个潜在的问题是它与类命名约定中允许的冲突。类通常是首字母大写,但这并不罕见,例如首字母缩略词全部大写,例如一个名为 API
或 COM
之类的类。这允许包和类命名约定之间存在一些重叠。但我的感觉是文件系统问题更有可能出现。
关于更改包名称大小写约定的 Java 原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231853/