“TLD-第一个类似域名的标识符”是满口的,但这就是我能想到的。
我已经看到这些年来在各个地方使用过这些,并且想知道这个约定背后的历史/原因是什么,因为你可能会认为有一种真正的方式来提及一个域。
我不使用Java,但我记得在寻找命名空间时通常会这样做:
uk.co.tophats.stitchkit
Mac OS X上“启动代理”的规范文件:
ws.agile.1PasswordAgent.plist
Mac OS X上的首选项文件:
com.apple.iTunesHelper.plist
为什么TLD是第一个?它只是像英国与美国日期格式一样的等级迂腐吗?
答案 0 :(得分:4)
对于Java的情况,这些包直接对应于目录层次结构,并且将目录层次结构植根于最常规的而非最具体的域标识符更有意义。此外,在读取目录层次结构时,最常见的是从上到下读取它。所以我要说的是,翻转域组件顺序的惯例是有意义的。
答案 1 :(得分:2)
在Java和其他编程语言中,包标识符指示项目的目录层次结构是如何的。
因此,如果您有两个包com.stackoverflow.server
和com.stackoverflow.client
,那么您最终会得到这个目录布局:
com/
stackoverflow/
client/
server/
这是好的和合乎逻辑的,而另一种方式会给你
client/
stackoverflow/
com/
server/
stackoverflow/
com/
这是不合时宜的。
答案 2 :(得分:1)
它使用全局唯一名称作为所有命名空间的前缀,从而将所有命名空间保密为全局唯一名称。
答案 3 :(得分:1)
从理论上讲,符号通常以最重要的信息开始,以便更容易地对信息进行排序和分组。 TLD是域结构的根,因此是最重要的信息。因此以这种方式构造包是有意义的。当然,如果它是 com.example.mypackage 或 example.com.mypackage 并不重要。但SUN决定采用更科学的方式。
关于日期格式,请注意有一个ISO描述“交换格式”: YYYY-MM-DD
这是相同的方案,因为年份是最重要的部分,其次是月份和日期。
因此,从这一点来看,使用“错误”符号的人是DNS系统本身。但我认为他们试图优化解析网址的整个过程(例如,首先是“www”,表示WebServer)
答案 4 :(得分:0)
这有点主观。您可以习惯"stackoverflow.com"
这样的约定,并想知道这些"com.apple"
内容的含义是什么。或者你可以成为具有多年经验的程序员,像"System.out"
这样的东西对你来说可能是最自然的事情。
com.apple
就像是在说“查看com
域名,在此内部查找apple
”。
apple.com
就像是说“寻找apple
,可以在com
域名中找到。”
所以这一切都取决于你正在使用的环境/情况。只是我的两分钱!
答案 5 :(得分:0)
不,这不是迂腐,而是创建命名空间。
可能还有其他3方开发者/程序/等。这也可以创建一个iTunesHelper.plist 或SQLRunner.java类。您可以使用自己的命名空间作为前缀,例你的域名 创建一个相当独特的名称,以便com.oracle.SQLRunner.java不同,并且不与org.postgresql.SQLRunner.java冲突