【问题标题】:Java package naming. Underscores: A special caseJava 包命名。下划线:特殊情况
【发布时间】:2014-11-03 06:05:32
【问题描述】:

今天我在一个项目中命名一个包,其中包含与称为“访问结构”的概念相关的代码。

现在,将这个包命名为“com.myemployer.project.component.accessstructures”似乎没有吸引力且难以阅读,因为三个“S”。 (更高级别的包实际上并没有被命名为“项目”和“组件”)。

我很想使用“...component.access_structures”

我在Oracle's site 上找不到 Java 约定中提到的任何内容。一个简短的网络搜索什么也没找到。

这样的名字的官方约定是什么?

【问题讨论】:

  • 使用驼峰式? accessStructure

标签: java package naming conventions


【解决方案1】:

我认为没有任何标准。人们根据方便性和可读性遵循不同的命名约定。但是大多数程序员发现骆驼案例命名是最方便的。您可以将其命名为accessStructure

找到了一个Oracle Doc,推荐包名全部小写

包名全部小写以避免与 类或接口的名称。

【讨论】:

    【解决方案2】:

    来自Oracle Docs

    包名全部小写以避免与类名或接口名冲突。

    公司使用颠倒的 Internet 域名来开始他们的包名——例如,com.example.mypackage 表示由 example.com 的程序员创建的名为 mypackage 的包。

    单个公司内发生的名称冲突需要按照该公司内的约定进行处理,可能通过在公司名称后包含地区或项目名称(例如,com.example.region.mypackage)。

    在某些情况下,互联网域名可能不是有效的软件包名称。如果域名包含连字符或其他特殊字符,如果包名称以数字或其他非法用作 Java 名称开头的字符开头,或者如果包名称包含保留的 Java 关键字,则会发生这种情况,比如“int”。在这种情况下,建议的约定是添加下划线

    虽然此文本没有指定您的确切大小写,但它确实表明对于无效的包名称,我们应该使用下划线。有人可能会争辩说,accessStructures 是我们在 Java 中定义方法的方式,因此这样命名包可能会造成混淆。 总的来说,这完全取决于您。

    如果你想遵守这个约定,我相信你应该为你的包命名:

    com.myemployer.project.component.access_structures
    

    您还可以查找同义词并找到可以减少混淆的替代词。我很快找到了一些:

    • 访问框架
    • 配件厂
    • accessarch(访问架构)
    • 访问构造

    【讨论】:

    • 我很欣赏这些建议,但不幸的是,“访问结构”是一个在域中根深蒂固的名称,我们在与客户交谈时使用它。为了避免混淆,我认为我们需要坚持下去。
    【解决方案3】:

    根据docs,您不能使用camelCase 进行包命名。在某些情况下可以使用snake_case 进行包命名,但如果您无法正确使用您的域,则更合适,因为其中包含连字符或以数字开头。但它必须是规则的例外而不是规则。

    如果我是你,我会改写它。例如:accessstructures -> accesscore

    【讨论】:

      猜你喜欢
      • 2014-02-16
      • 2021-04-04
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2015-10-07
      • 2018-05-31
      • 2016-10-23
      相关资源
      最近更新 更多