Java 包名称中单词分隔符的约定是什么?

发布于 2024-09-08 16:29:08 字数 377 浏览 4 评论 0原文

包名中的单词应该如何分隔?以下哪项是正确的?

  1. com.stackoverflow.my_packageSnake Case 使用下划线)
  2. com.stackoverflow.my-packageKebab Case 使用连字符)
  3. com.stackoverflow.myPackageCamel Case
  4. com.stackoverflow.MyPackagePascal Case

什么是通用标准?

How should one separate words in package names? Which of the following are correct?

  1. com.stackoverflow.my_package (Snake Case using underscore)
  2. com.stackoverflow.my-package (Kebab Case using hyphens)
  3. com.stackoverflow.myPackage (Camel Case)
  4. com.stackoverflow.MyPackage (Pascal Case)

What is the general standard?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

£冰雨忧蓝° 2024-09-15 16:29:08

这三个都不是惯例。

使用com.stackoverflow.mypackage。

包名称不遵循驼峰式大小写、下划线或连字符包命名约定。

此外,Google Java 样式指南 指定了完全相同的内容(即 com.stackoverflow.html)。 mypackage) 约定:

5.2.1 包名称

包名称全部小写,连续的单词简单地连接在一起(没有下划线)。例如,com.example.deepspace不是 com.example.deepSpacecom.example.deep_space

Google Java 风格指南:5.2 按标识符类型划分的规则: 5.2.1 包名称.

All three are not the conventions.

Use com.stackoverflow.mypackage.

The package names do not follow camel casing or underscores or hyphens package naming convention.

Also, Google Java Style Guide specifies exactly the same (i.e. com.stackoverflow.mypackage) convention:

5.2.1 Package names

Package names are all lowercase, with consecutive words simply concatenated together (no underscores). For example, com.example.deepspace, not com.example.deepSpace or com.example.deep_space.

Google Java Style Guide: 5.2 Rules by identifier type: 5.2.1 Package names.

时光磨忆 2024-09-15 16:29:08

以下是官方命名约定文档的规定:

套餐

唯一包名的前缀始终以全小写 ASCII 字母书写,并且应该是顶级域名之一,目前为 comedugovmilnetorg 或标识国家/地区的英文两字母代码之一,如ISO 标准 3166,1981。

包名称的后续组成部分根据组织自己的内部命名约定而有所不同。此类约定可能指定某些目录名称组件是部门、部门、项目、计算机或登录名称。

示例

  • com.sun.eng
  • com.apple.quicktime.v2
  • edu.cmu.cs.bovik.cheese


参考文献


请特别注意,顶部后面的任何内容上述文档未指定 -level 域名前缀。 JLS 也同意这一点,并给出了以下例子:

  • com.sun.sunsoft.DOE
  • gov.whitehouse.socks.mousefinder
  • com.JavaSoft.jag.Oak
  • org.npr.pledge.driver
  • uk.ac.city.rugby.game

以下摘录也相关:

在某些情况下,互联网域名可能不是有效的包名称。以下是处理这些情况的一些建议约定:

  • 如果域名包含连字符或标识符中不允许的任何其他特殊字符,请将其转换为下划线。
  • 如果任何生成的包名称组件是关键字,则在其后添加下划线。
  • 如果任何生成的包名称组件以数字或任何其他不允许作为标识符的初始字符的字符开头,请在该组件前面添加下划线。

参考文献

Here's what the official naming conventions document prescribes:

Packages

The prefix of a unique package name is always written in all-lowercase ASCII letters and should be one of the top-level domain names, currently com, edu, gov, mil, net, org, or one of the English two-letter codes identifying countries as specified in ISO Standard 3166, 1981.

Subsequent components of the package name vary according to an organization's own internal naming conventions. Such conventions might specify that certain directory name components be division, department, project, machine, or login names.

Examples

  • com.sun.eng
  • com.apple.quicktime.v2
  • edu.cmu.cs.bovik.cheese

References


Note that in particular, anything following the top-level domain prefix isn't specified by the above document. The JLS also agrees with this by giving the following examples:

  • com.sun.sunsoft.DOE
  • gov.whitehouse.socks.mousefinder
  • com.JavaSoft.jag.Oak
  • org.npr.pledge.driver
  • uk.ac.city.rugby.game

The following excerpt is also relevant:

In some cases, the internet domain name may not be a valid package name. Here are some suggested conventions for dealing with these situations:

  • If the domain name contains a hyphen, or any other special character not allowed in an identifier, convert it into an underscore.
  • If any of the resulting package name components are keywords then append underscore to them.
  • If any of the resulting package name components start with a digit, or any other character that is not allowed as an initial character of an identifier, have an underscore prefixed to the component.

References

这样的小城市 2024-09-15 16:29:08

任何人都可以使用下划线 _ (没关系)

没有人应该使用连字符 - (这是一种不好的做法,可能会导致您按照评论部分中的 @glglgl 出现错误)

没有人应该在包名称中使用大写字母(不好的做法)

注意:这里的“不好的做法”是指从技术上讲,您可以使用它,但按照惯例,它的书写方式并不好。

来源:命名包(docs.oracle)

Anyone can use underscore _ (its Okay)

No one should use hypen - (its Bad practice and it may result you in error as per @glglgl in comments section)

No one should use capital letters inside package names (Bad practice)

NOTE: Here "Bad Practice" is meant for technically you are allowed to use that, but conventionally its not in good manners to write.

Source: Naming a Package(docs.oracle)

白况 2024-09-15 16:29:08

官方命名约定并不那么严格,他们甚至不“禁止”驼峰式大小写表示法,除了前缀(示例中的 com )。

但我个人会避免使用大写字母和连字符,甚至数字。我也会像 Bragboy 建议的那样选择 com.stackoverflow.mypackage 。

(连字符“-”在包名称中是不合法的)

编辑

有趣 - 语言规范也有关于命名约定的内容。

第 7.7 章唯一包名称中,我们看到包名称由大写字母组成的示例(因此驼峰命名法就可以了),他们建议用下划线替换连字符(“mary-lou”->“mary_lou”),并用下划线作为 java 关键字的前缀(“com.java”)。 example.enum" -> "com.example._enum")

包名称中大写字母的更多示例可以在 6.8.1 包名称

The official naming conventions aren't that strict, they don't even 'forbid' camel case notation except for prefix (com in your example).

But I personally would avoid upper case letters and hyphenations, even numbers. I'd choose com.stackoverflow.mypackage like Bragboy suggested too.

(hyphenations '-' are not legal in package names)

EDIT

Interesting - the language specification has something to say about naming conventions too.

In Chapter 7.7 Unique Package Names we see examples with package names that consist of upper case letters (so CamelCase notation would be OK) and they suggest replacing hyphenation by an underscore ("mary-lou" -> "mary_lou") and prefix java keywords with an underscore ("com.example.enum" -> "com.example._enum")

Some more examples for upper case letters in package names can be found in chapter 6.8.1 Package Names.

戈亓 2024-09-15 16:29:08

包名中的下划线看起来很难看。就其价值而言,如果名称由三个或更多单词组成,我会使用缩写(例如:com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo< /code>),然后在 package-info.java 中记录包的用途。

Underscores look ugly in package names. For what it's worth, in case of names compound of three or more words, I use initials (for example: com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo) and then document the package purpose in package-info.java.

耳根太软 2024-09-15 16:29:08

包名称中的单词串联是大多数开发人员不会做的事情。

你可以使用类似的东西。

com.stackoverflow.mypackage

请参阅JLS 名称声明

Concatenation of words in the package name is something most developers don't do.

You can use something like.

com.stackoverflow.mypackage

Refer JLS Name Declaration

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文