3

“TLD-first domain-like identifiers”是满口的,但这就是我能想到的。

多年来,我已经看到这些在不同的地方被使用,并且想知道这个约定背后的历史/原因是什么,因为你可能会认为有一种真正的方式来提及一个域。

我不使用 Java,但我记得从四处寻找命名空间通常是这样完成的:

uk.co.tophats.stitchkit

Mac OS X 上“启动代理”的规范文件:

ws.agile.1PasswordAgent.plist

Mac OS X 上的首选项文件:

com.apple.iTunesHelper.plist

为什么 TLD 是第一位的?它只是像英国和美国日期格式这样的等级制度吗?

4

6 回答 6

4

对于 Java 来说,包直接对应于目录层次结构,目录层次结构以最一般的而不是最具体的域标识符为根更有意义。此外,在读取目录层次结构时,最常见的是从上到下读取。所以我想说翻转域组件顺序的约定在那里是有意义的。

于 2010-09-06T12:45:29.570 回答
2

在 Java 和其他编程语言中,包标识符决定了项目的目录层次结构。

所以如果你有两个包com.stackoverflow.servercom.stackoverflow.client,你最终会得到这个目录布局:

com/
   stackoverflow/
      client/
      server/

这是好的和合乎逻辑的,而反过来会给你

client/
   stackoverflow/
      com/
server/
   stackoverflow/
      com/

这是不切实际的。

于 2010-09-06T12:47:20.000 回答
1

它是一种使用全局唯一名称作为所有命名空间前缀的方法,从而使所有命名空间对全局唯一名称保持私有。

于 2010-09-06T12:46:47.150 回答
1

实际上,符号通常从最重要的信息位开始,以使信息的排序和分组更容易。TLD 是域结构的根,因此是最重要的信息位。因此以这种方式构建包是有意义的。当然,它是com.example.mypackage还是example.com.mypackage都没有关系。但 SUN 决定选择更科学的方式。

关于日期格式,请注意有一个ISO将“交换格式”描述为:YYYY-MM-DD
这是相同的方案,因为年份是最重要的部分,其次是月份和日期。

因此,从这一点来看,使用“错误”表示法的人是 DNS 系统本身。但我认为他们试图优化整个解析url(例如“www”首先表示WebServer)

于 2010-09-06T13:30:04.630 回答
0

这有点主观。你可以习惯于这样的约定"stackoverflow.com",并且想知道所有这些东西到底"com.apple"是关于什么的。或者你可以成为一名拥有多年经验的程序员,而类似"System.out"的东西对你来说可能是最自然的事情。

com.apple就像说“查看com域,在此内部,寻找apple”。

apple.com就像说“寻找apple,可以在com域中找到”。

所以这一切都取决于您使用的环境/情况。只是我的两分钱!

于 2010-09-06T12:41:13.510 回答
0

不,这不是迂腐,而是创建一个命名空间。

可能还有其他 3 方开发人员/程序/等。这也可以创建一个 iTunesHelper.plist 或一个 SQLRunner.java 类。你用你自己的命名空间作为前缀,例如你的域名来创建一个合理唯一的名称,所以 com.oracle.SQLRunner.java 是不同的,并且不会与 org.postgresql.SQLRunner.java 冲突

于 2010-09-06T12:57:21.677 回答