2017-01-02 103 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

駱駝案件建議與小寫的第一個字母。變量名稱不應以下劃線_或美元符號$個字符開頭,即使這兩個字符都是允許的。

我會補充說$字符傳統上被編譯器用在內部類的生成類文件的名字中。