【发布时间】:2018-05-31 05:13:19
【问题描述】:
SonarLint 产生错误:
Package names should comply with a naming convention (squid:S00120) ... With the default regular expression ^[a-z]+(\.[a-z][a-z0-9]*)*$.
但是 JLS 允许甚至建议使用下划线。第 6.1 条。声明说,i.a.,
如果域名包含连字符或任何其他特殊字符 标识符中不允许出现(第 3.8 节),请将其转换为下划线。
我可以更改正则表达式还是必须在产品中修复它?
【问题讨论】:
-
下划线和大写字母在包名中合法,但它们被广泛认为是不好的风格。
-
我对禁止大写字母没有问题,但是没有下划线就不能遵守 JLS 中的另一个条款:“您通过首先拥有(或属于拥有的组织)来形成唯一的包名称一个 Internet 域名,例如 oracle.com。然后,您可以逐个组件地反转此名称,...,并将其用作您的程序包名称的前缀,使用您组织内制定的约定来进一步管理程序包名称。我的域名是 www.qsm-fss.com。所以在包名中有下划线不会是不好的风格。
-
基于域名的包命名算法是非规范的,对吧?它在实践中被广泛违反。
-
这不是规范,但强烈推荐,即使是 Java 9。我看不出 JLS 推荐怎么会被认为是不好的风格。
-
我会告诉声纳人员停止执行不同于指定的约束捷豹路虎。他们这样做是 100% 错误的。