在包名中如何区分单词?下列哪个选项是正确的?

com.stackoverflow。my_package(使用下划线的Snake Case) com.stackoverflow。my-package(连字符串) com.stackoverflow.myPackage(驼色案例) com.stackoverflow.MyPackage (Pascal案例)

一般标准是什么?


当前回答

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

你可以用。

com.stackoverflow.mypackage

参考JLS名称声明

其他回答

这三个都不是惯例。

使用com.stackoverflow.mypackage。

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

此外,谷歌Java风格指南指定了完全相同的约定(即com.stackoverflow.mypackage):

5.2.1包名 包名都是小写的,连续的单词简单地连接在一起(没有下划线)。例如,com.example.deepspace,而不是com.example.deepspace或com.example.deep_space。 —谷歌Java风格指南:5.2按标识符类型划分规则:5.2.1包名。

官方的命名约定并没有那么严格,除了前缀(在你的例子中是com)之外,他们甚至没有“禁止”驼色大小写符号。

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

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

EDIT

有趣的是,语言规范也提到了命名约定。

在第7.7章唯一包名中,我们看到包名由大写字母组成的例子(因此骆驼式表示法是可以的),他们建议用下划线替换连字符("mary-lou" -> "mary_lou"),用下划线来前缀java关键字("com.example. example. ")。Enum " -> "com.example._enum")

更多关于包名中大写字母的例子可以在6.8.1章包名中找到。

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

你可以用。

com.stackoverflow.mypackage

参考JLS名称声明

包名中的下划线看起来很难看。对于三个或三个以上单词的组合,我使用首字母(例如:com.company.app.ingresoegresofijo (ingreso/egreso fijo) -> com.company.app.iefijo),然后在package-info.java中记录包的用途。

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

任何人都不应该使用连字符-(这是坏习惯)

不应在包名中使用大写字母(不良做法)

注意:这里的“坏习惯”在技术上是指你可以使用它,但从传统上讲,写它是不礼貌的。

来源:命名包(docs.oracle)