【问题标题】:What's the convention for java package names without a domain association?没有域关联的 java 包名称的约定是什么?
【发布时间】:2012-09-14 04:29:38
【问题描述】:

我在 SO 上找不到回答我的确切问题的 Q/A,所以我想我会发布它,看看有什么结果。

就 Java 包的命名约定而言,我知道它应该是反向域名:com.whatever.stuff,并且我得到了关于禁止混合大小写、连字符、关键字等的规则。

我还阅读了 Java 语言规范的第 7.7 节(唯一包名称)。据我所知,Java 的规则是使用反向域来确保唯一性……如果你没有,那就去买一个:

You form a unique package name by first having (or belonging to an organization that has) an Internet domainname, such as sun.com. - 第 7.7 节

因此,如果我对花钱购买域名不感兴趣,我不属于我可以捎带名字的公司,我是否遗漏了命名约定的任何部分应该遵循吗?我想我可以随心所欲地为其命名,但我只是想知道我是否遗漏了什么。

注意:我想发布我的包以供其他开发人员使用,所以我不想只做一些在我的系统上工作的东西,而是尽可能地做一些更标准的东西。 p>

我添加了android标签是因为我要写的java包将用于Android应用程序,不知道android开发者是否有不同的意见。

【问题讨论】:

  • 我经常看到me.myname.myproject

标签: java android naming-conventions package conventions


【解决方案1】:

如果您要分发很多东西,我真的建议您获得一个域名。然而,另一种选择是使用您的电子邮件:例如bob@gmail.com 将变为 com.gmail.bob。这比使用域名少见,但仍然由一些人完成,并且仍然确保唯一性。

【讨论】:

  • +1 这实际上是个好主意,我没想到要使用我的电子邮件帐户。我真的只打算分发 2 个包,不是很多......所以也许这就是我要去做的。
  • +1 如果您打算分发您的资料,那么获得一个域名是个好主意。
  • +1,非常好。为了与电子邮件提供商的名称空间区分开来,在其前面加上 email. 可能会很有用(如 email.com.gmail.bob
  • 获得域名后我们能做什么?我们不能使用我们不拥有的域吗?如果我们放弃我们当前使用的域会发生什么?谢谢。
  • @JannisFroese,现在有人拥有 com.email 域,因此 email.com.* 无效链接:com.email
【解决方案2】:

在专业环境中,惯例是使用反向域。在与自己更相关的环境中,您可以使用org.projectname.packagename.*

这是一个惯例,而不是硬性规定。您可以随意使用您喜欢的任何域名命名风格。

【讨论】:

    【解决方案3】:

    一种约定是使用托管服务提供商的域名,例如

    com.github.myrepositoryname
    net.sf.sourceforge.myproject
    com.googlecode.myproject
    

    好处:

    缺点:

    • 如果您决定更改提供程序,则您的包结构已经过时,或者您引入了向后不兼容的更改以使源代码与您的新提供程序保持一致

    【讨论】:

    • +1 这是一个很好的观点,由于缺点,我会将它用作使用我的电子邮件的备份,但这是另一种好方法。谢谢!
    • @Mike 只是不要更改您的电子邮件地址 ;-)
    【解决方案4】:

    域名可以免费使用。 例如,dyn.com 在http://free.domain.name/ 提供“whatever.dyndns.org”形式的免费域名

    【讨论】:

      【解决方案5】:

      如果您是唯一的编码员,则可以使用您的姓名。 我的名字是 Jannis Froese,所以我会使用

      jannisfroese.projectname.stuff

      或者如果您想保留“有效”域名

      localhost.jannisfroese.projectname.stuff

      (localhost 是保留的顶级域)

      当然,这只有在你的名字足够独特的情况下才有效,这样就不太可能发生冲突

      【讨论】:

        猜你喜欢
        • 2011-07-28
        • 2011-03-11
        • 1970-01-01
        • 2017-12-28
        • 2012-01-04
        • 2017-10-21
        • 1970-01-01
        • 1970-01-01
        • 2011-05-26
        相关资源
        最近更新 更多