【问题标题】:Naming a Package in Java after an e-mail address, when said e-mail address contains periods before the "@" symbol [closed]当电子邮件地址在“@”符号之前包含句点时,在 Java 中以电子邮件地址命名包[关闭]
【发布时间】:2013-04-09 17:43:26
【问题描述】:

我相信我们都知道,可以通过购买像“somedomain.org”这样的域名来为其 Java 产品命名包,在这种情况下,包将遵循“org.somedomain.packagename”模式(相关来源:http://docs.oracle.com/javase/tutorial/java/package/namingpkgs.html)。

但是,对于那些没有域名的人,电子邮件地址作为替代提供。例如,一个名叫 John Bob Doe 的人可能已经创建了一个 GMail 帐户,例如“john_bob_doe@gmail.com”,因此会将他们的包命名为:“com.gmail.john_bob_doe”和“com.gmail.jon_bob_doe”。一些内包”

这一切都很好,但如果他的电子邮件地址是“john-bob-doe@gmail.com”会发生什么?好吧,根据上面的链接,在出现连字符的情况下,我们可以用下划线替换连字符。因此,再次:“com.gmail.john_bob_doe”和“com.gmail.jon_bob_doe.someinnerpackage”。

现在是“真正的”问题:如果他的电子邮件地址是“john.bob.doe@gmail.com”会发生什么?那么包命名应该是“com.gmail.john.bob.doe”吗?或者也许是“com.gmail.doe.bob.john”?基本上,问题是:当他们的电子邮件地址在“@”符号之前包含句点时,应该如何命名他们的包?

推理:我有一个这样的电子邮件地址,我想用它来命名我的项目的包。

【问题讨论】:

  • 这有多重要?在这种情况下可能没有固定的约定,所以随心所欲。
  • @LouisWasserman 我不确定这到底有多重要,但从下面纳撒尼尔福特的回答来看,我想这并不重要。 “随心所欲”,对我来说,听起来不是一个合适的策略,但考虑到,就像你说的,“在这种情况下没有固定的惯例”,我明白你的意思。

标签: java naming-conventions packages


【解决方案1】:

请注意,Java 包的命名约定就是这样;公约。您可以随意命名它们。唯一强制执行的是. 描绘了编译器在其中查找源代码的文件系统中的子目录。

另请注意,至少对于 gmail,电子邮件中的 . 会被忽略。因此myname@gmail.commy.name@gmail.com 是等价的。因为它们是等价的,com.gmail.myname 将是与此类电子邮件地址相关联的适当包名称。

使用域名/电子邮件地址的原因是它们是(可能)避免包的命名空间冲突的便捷方式。但是,使用本地 IDE 中可用的现代重构技术,这不应该成为进步的障碍。选择一个非顶级域前缀并将您的程序或库命名为您想要的任何名称rogue.my.awesome.java.program

最后,请注意,将您的包命名为 com.google.myname 意味着 google 开发了该包。出于这个原因,大多数程序员都投入了一些工作来建立一些屏幕名称或缩短他们的实际名称作为在线存在,以便他们可以将其用作此项目和类似项目的前缀:myname.awesome.java.program。这满足了命名的一个优雅的次要关注点:知道在遇到源代码时遇到问题时该联系谁。

【讨论】:

    【解决方案2】:

    没有一种正确的方法可以做到这一点。

    你需要记住的是这个约定/包名称形成指南的目的......这是:

    • 将相互独立开发的 Java 代码库之间意外包名冲突的风险降至最低,并且

    • 传达有关谁或什么“拥有”您正在创建的命名空间的一些信息。

    从这个角度来看,com.gmail.john.bob.doecom.gmail.doe.bob.john 可以很好地降低冲突风险,并且聪明人认为com.gmail(即 Google)拥有命名空间的风险也很小。


    使用下划线违反了一般的 Java 标识符命名约定......我建议不要这样做

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-16
      • 2014-10-10
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多