從我不時看到這樣的事情:在java中創建_fields_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <
class Clazz {
private int _goodName;
private int _anotherGoodName;
...
}
我不明白這一點。閱讀這些代碼很難並且很不尋常。有什麼優點?
從我不時看到這樣的事情:在java中創建_fields_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <
class Clazz {
private int _goodName;
private int _anotherGoodName;
...
}
我不明白這一點。閱讀這些代碼很難並且很不尋常。有什麼優點?
這是一些人使用的命名約定,表示「這些是私人變量」。
就我個人而言,我不是一個粉絲,因爲我認爲你可以忽略下劃線並取得相同的結果,但是對於他自己的結果。我認爲這可能源自IDE之前的日子,因爲您可能正在查看某種方法,並且某些變量的可見性/所有權並不總是很清楚。
以下劃線爲前綴的成員和方法示例我已經看到使用約定來指示不能觸及該成員或方法,但不能使其成爲私有。我把它看作'這裏是龍',從來沒有理由自己使用它。
一個示例是servlet開發中的_jspService()方法。查看鏈接的JavaDocs。
這就是* only *有效的例子。對於剩餘的,不要在Java中使用'_'。 – BalusC 2010-03-15 18:29:23
這只是一個偏好問題。有些人喜歡給一個類的所有私有成員變量添加一個'_',其他的不用。我個人不喜歡它,但又是偏好。
命名約定都是關於什麼是舒服寫代碼讀/複製(雖然他們應該是關於什麼每個人都能輕鬆讀取)
我有誰的東西,如沿採用了這種約定一個朋友的人:
private int m_myVariable;
他的所有領域等,這表示它作爲你正在尋找的特定類的成員,但它會非常非常討厭,如果你不這樣做閱讀的。
如果是,你可以有一個成員變量,屬性和參數都指的是同樣的事情可能發生的情況,這是絕對意義上區分:
private string _myVariable;
public MyClass(string myVariable)
{
//do stuff.
_myVariable = myVariable;
}
public string MyVariable
{
get
{
return _myVariable;
}
}
在Java中,您通常會使用'this'來實現此目的。即'this.myVariable = myVariable'。 – BalusC 2010-03-15 18:46:10
如果只有這個語法在java中有效。誠實善良的屬性會很好。 – 2010-03-15 18:49:56
我用這些公約在我的代碼中:
非終結,靜態字段以下劃線開頭。
private static SomethingOrOther _goodName;
參數以下劃線結尾。
public void doSomething(Object goodParam_, String stringToo_) {
}
雖然你可能認爲它很難在變量的聲明看,關鍵是要確保他們流行閱讀中,他們已經習慣和的代碼時確保它們總是不同於任何非靜態字段,參數和本地定義的變量。
我認爲,這樣的標準的另一個好處是當其他人來修改代碼時,他們可以快速識別靜態字段和參數,使代碼的理解更容易理解,而不必總是引用定義。
我通常不會考慮實例字段的約定,因爲幾乎完全通過s/getters訪問它們。
我已經不再使用Java代碼,而是傾向於讓我的IDE始終完全符合this
的實例字段和類名稱的靜態字段,並始終在每個不變的變量上使用final
,甚至方法參數。關於走這條路線的一個有趣的事情是,它鼓勵很好的命名練習,至少對我來說是這樣,因爲我喜歡我的變量在以this
或類名前綴時很好地閱讀。
下劃線前綴在C++中相當常見;在Java中我看不到它 - 並且會避免它。 – 2010-03-15 18:23:02