为什么反向DNS符号用于包命名



使用反向DNS包符号有技术上的原因吗?或者这只是一种惯例?

我认为现在这只是一种惯例,但我想说它有助于将事情组织起来。

这里有几个例子来说明我为什么这么说:com.vzy.gui.*com.vzy.io.*

  • 我们看到,com,然后想,"哦,嘿,这是一个公司
  • 然后是vzy,然后想,"制造这个的人是vzy !"
  • 然后是guiio,这让我们看到"这一个工作gui,另一个和IO一起工作,很酷。"

我认为另一种显示这一点的好方法是将它切换回来,看看它看起来如何…

import ArrayList.util.java
import BorderLayout.awt.java
import File.io.java
import JButton.swing.javax
import JFrame.swing.javax
import JLabel.swing.javax
import JOptionPane.swing.javax
import JPanel.swing.javax
import JScrollPane.swing.javax
import JSlider.swing.javax
import LinkedBlockingQueue.concurrent.util.java
import PrintWriter.io.java
import Scanner.util.java
import SwingUtilities.swing.javax

import java.awt.BorderLayout
import java.io.File
import java.io.PrintWriter
import java.util.ArrayList
import java.util.Scanner
import java.util.concurrent.LinkedBlockingQueue
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JLabel
import javax.swing.JOptionPane
import javax.swing.JPanel
import javax.swing.JScrollPane
import javax.swing.JSlider
import javax.swing.SwingUtilities

Sun曾经维护过一个Java编码标准指南-你可以在Oracle网站上找到一个存档的副本-根据这个网站,自1999年以来就没有维护过了:http://www.oracle.com/technetwork/java/codeconvtoc - 136057. - html

包名称建议部分确实建议使用所属组织的域名,优先使用顶级域名:http://www.oracle.com/technetwork/java/javase/documentation/codeconventions - 135099. - html # 367

唯一包名的前缀总是全小写并且应该是顶级域名之一,目前是com, edu, gov, mil, net, org,或者英文中的一个ISO标准中指定的识别国家的两个字母代码3166、1981 .

包名的后续组件根据不同而不同组织自己的内部命名约定。这样的惯例可能指定某些目录名组件被分割,部门、项目、机器或登录名

我认为这在一段时间内成为了公认的标准,尽管今天它并没有被严格遵守。您没有理由不能为您的项目或组织设计一个对您最有意义的命名模式-没有技术上的原因为什么它必须遵循这个域名模式。

今天遵循的典型模式是首先进行更高级别的分组(组织或项目名称),然后是越来越具体的分组,直到最具体的功能或技术分组。

没有技术上的原因,只是为了避免冲突的约定。以下是非规范引用自Java语言规范:

开发人员应该采取措施,通过为广泛分发的包选择唯一的包名来避免两个发布的包具有相同名称的可能性…

您通过首先拥有(或属于拥有Internet域名的组织)来形成唯一的包名,例如oracle.com。然后逐个组件地反转该名称,在本例中获得com。Oracle,并使用它作为包名的前缀,使用组织内开发的约定来进一步管理包名。这样的约定可能指定某些包名称组件是部门、部门、项目、机器或登录名。

包的名称并不意味着包在Internet上的存储位置。生成唯一包名的建议约定仅仅是在现有的、广为人知的唯一名称注册表上附加一个包命名约定,而不必为包名创建一个单独的注册表。

包名与域名顺序相反的原因很简单,因为包名是一个完全限定名。每个包都包含一组类/接口和/或子包,子包的名称必须以包含它的包作为前缀,以形成完全限定名:

作为另一个已命名包的子包的已命名包的完全限定名由包含包的完全限定名和". ",后面跟着子包的简单(成员)名。

相关内容

  • 没有找到相关文章

最新更新