反向域表示法起源于Java,但已在许多平台中广泛使用,例如Android程序包,Mac OS X程序包,JavaScript,ActionScript等。
这种做法非常有用,因为它为命名空间软件提供了一个分散的系统。无需向中央机构申请名称空间;只需使用您拥有(反向)的域名并在您自己的组织内进行管理。通过这样命名软件包,几乎可以确定代码不会与其他软件包冲突。
从Oracle的Java教程中:
公司使用其反向的Internet域名来开始其程序包名称,例如com.example.mypackage表示由example.com的程序员创建的名为mypackage的程序包。
单个公司内部发生的名称冲突需要按照该公司内部的约定进行处理,也许可以通过在公司名称之后添加区域或项目名称(例如com.example.region.mypackage)来解决。
这不仅是死记硬背的做法,也是个好习惯,因为它是一个完整且完全特定的名称空间。如果有两家名为Acme的公司并且都选择了名称空间acme.
,则它们的代码将发生冲突。但是这些公司中只有一个可以拥有acme.com域,因此他们可以使用com.acme.
名称空间。
反向域名允许自上而下的体系结构。com
将包含公司(或拥有.com域名的任何人)的代码,以及在公司(域名)名下的代码。然后,组织和/或实际名称空间的结构将更深入。(例如,如果它是来自名为internal.acme.com的网络的代码,则为该部门提供了自己的子命名空间com.acme
。)这种自上而下的结构用于许多应用程序中,包括系统管理中。(类似于反向IP地址查找。)
就个人而言,我将其用于为公司编写的所有新JavaScript代码。即使我以后为另一家公司编写相同的代码,它也可以确保该代码永远不会与任何其他代码冲突。它可以使访问代码变得麻烦(键入com.digitalfruition.
可能会花很多时间),但是可以很方便地使用闭包和局部变量(var DF = com.digitalfruition
)解决该问题。