2017-01-02 102 views
1

当我正在经历一个项目时,我发现了一些奇怪的变量名称。 Sonarqube给了我关于这些变量的Code Smell声明。

例如protected String value$editedby$java$lang$String;

和消息从Sonarqube:

Rename this field "value$editedby$java$lang$String" to match the regular expression '^[a-z][a-zA-Z0-9]*$'. 

因此,它是采用在变量名$有道?

+1

相关:http://stackoverflow.com/questions/7484210/what-is-the-meaning-of-in-a-variable-name – Maroun

+0

你可能想在代码审查网络而不是StackOverflow上提出这个问题。 。 – radoh

+1

[http://stackoverflow.com/a/7484245/348975](http://stackoverflow.com/a/7484245/348975)解释了为什么不应该使用'$'。这在我看来主要是胡说 - 如果你不应该使用'$'为什么它是一个允许的字符。另一方面,没有强烈的理由使用'$',它是公认的BS - 所以我遵循。 – emory

回答

4

我会强烈建议反对,JLS-3.8. Identifiers说(部分)

通过 “Java字母” 包括大写和小写ASCII拉丁字母A - Z\u0041 - \u005a),并a - z\u0061 - \u007a),并且,由于历史原因,ASCII下划线(_,或\u005f)和美元符号($,或\u0024)。 $符号应该仅用于机械生成的源代码,或者很少用于访问遗留系统上预先存在的名称。

1

虽然在变量名中使用$字符在技术上是合法的,但Java的编码标准不鼓励这样做。通常的变量约定是lowerCaseCamelCase。所以,你的情况:

protected String valueEditedByJavaLangString; 
1

骆驼案件建议与小写的第一个字母。变量名称不应以下划线_或美元符号$个字符开头,即使这两个字符都是允许的。

我会补充说$字符传统上被编译器用在内部类的生成类文件的名字中。