在包名中如何区分单词?下列哪个选项是正确的?
com.stackoverflow。my_package(使用下划线的Snake Case) com.stackoverflow。my-package(连字符串) com.stackoverflow.myPackage(驼色案例) com.stackoverflow.MyPackage (Pascal案例)
一般标准是什么?
在包名中如何区分单词?下列哪个选项是正确的?
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)