Java包命名。下划线:一个特例

Java包命名。下划线:一个特例,java,package,naming,conventions,Java,Package,Naming,Conventions,今天,我在一个项目中命名了一个包,其中包含与称为“访问结构”的概念相关的代码 现在,将这个包命名为“com.myemployer.project.component.accessstructures”似乎不太吸引人,而且由于三个“S”的缘故,很难阅读。(更高级别的包实际上没有命名为“项目”和“组件”) 我很想使用“…组件.访问\u结构” 我找不到上的Java约定中提到的任何内容。而一次简短的网络搜索什么也没发现 像这样的名字的官方惯例是什么?我认为没有任何标准。人们根据方便性和可读性遵循不同的命

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

现在,将这个包命名为“com.myemployer.project.component.accessstructures”似乎不太吸引人,而且由于三个“S”的缘故,很难阅读。(更高级别的包实际上没有命名为“项目”和“组件”)

我很想使用“…组件.访问\u结构”

我找不到上的Java约定中提到的任何内容。而一次简短的网络搜索什么也没发现


像这样的名字的官方惯例是什么?

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

找到一个建议将包名与所有小写字母一起使用的包

包名用小写字母书写,以避免与 类或接口的名称

包名以所有小写字母编写,以避免与类或接口的名称冲突

公司使用其反向的Internet域名来开始其包名,例如,com.example.mypackage是由程序员在example.com创建的名为mypackage的包

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

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

尽管本文没有指定确切的大小写,但它确实指出,对于无效的包名,我们应该使用下划线。有人可能会说,
accessStructures
是我们在Java中定义方法的方式,因此这样命名一个包可能会令人困惑。 总的来说,这完全取决于你

如果你想遵守这一惯例,我认为你应该将你的包裹命名为:

com.myemployer.project.component.access_structures
此外,您还可以查找同义词并找到可以减少混淆的替代词。我很快发现了一些:

  • 访问框架
  • 配件厂
  • accessarch(accessarchitecture)
  • 存取构造
根据,您不能使用
camelCase
进行包命名。在某些情况下,可以使用
snake\u case
进行包命名,但如果您不能正确使用域,则更合适,因为域中有连字符或以数字开头。但它必须是规则的例外,而不是规则


如果我是你,我会重新措辞。例如:
accessstructures->accesscore

用例
accessStructure
我很欣赏这些建议,但不幸的是,“accessstructures”是一个在该领域根深蒂固的名称,我们在与客户交谈时使用它。为了避免混淆,我认为我们需要坚持下去。