更改包名称大小写约定的 Java 原因

标签 java naming-conventions

就在你说这是重复之前,我已经看到了其他问题,但我仍然想发布这个。

所以我正在阅读 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”。

相反的方向也有同样的处理:从包名称解析文件系统路径,我可以想象这可能会导致一些歧义或至少让用户感到惊讶的情况。

我可以看到这在某些情况下会造成混淆。

另一个潜在的问题是它与类命名约定中允许的冲突。类通常是首字母大写,但这并不罕见,例如首字母缩略词全部大写,例如一个名为 APICOM 之类的类。这允许包和类命名约定之间存在一些重叠。但我的感觉是文件系统问题更有可能出现。

关于更改包名称大小写约定的 Java 原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39231853/

相关文章:

java - 使用 spring-data-mongodb 持久化包含对象的对象

c++ - 我应该如何命名这些类?

design-patterns - 常见模式的命名约定?

java - hadoop java中的类路径问题

java - 在Java中覆盖文本文件的一部分

java - Logcat onclicklistener android 错误

java - 有没有办法强制 Java VM 立即执行从 JNI 发送的异常?

haskell - 变量名 x 和 xs 的历史是什么?

java - 使用双重否定来测试条件

java - ListView 适配器 Android 内的 ListView