Java 程式風格

如果為了更好的可讀性、可以違反下列規則

以下建議是為了增加可讀性,使程式碼容易被了解、維護、較一致。

Naming Conventions

General Naming Conventions

package 全小寫

com.company.application.ui

資料型態(Type)必須是名詞,開頭大寫,大小寫並用,駝峰

AudioSystem

變數命名 開頭小寫,大小寫並用,駝峰

audioSystem

這樣的方式,可以容易將型態和變數做區隔,避免潛在的宣告衝突。

常數的命名(final的變數) 全大寫,並使用 "_" 來分隔每個 key words

COLOR_RED

Method的名稱必須是動詞,開頭小寫,大小寫並用,駝峰

getName()

命名時,"不要"將專有名詞的縮寫或簡稱全部大寫

exportHtmlSource()

私有成員變數 的命名,在後面加 (_)

private String name_;

除了變數的名稱和型態,最重要的就是有效範圍。 利用(__) 可以很容易跟暫存變數做區別。 對於我們來說,class variable 比 method variable 更重要也更有意義。 所以class variable 應該被突顯。 對 setter method 來說,也可輕易找到合理的參數名稱,避免混淆 (__)建議加在後面,因為可讀性比較好

共用的變數名稱,應該和資料型態(Type)有一樣的命名

void setTopic(Topic topic)

NOT: void setTopic(Topic value)

減少使用不同的 專有名詞 or 不同名稱 的數量,可降低複雜性。且可從變數名稱輕易推斷出型態。 如果某些理由讓此慣例變得不洽當,這強烈地意味著此型態(Type)的定義或命名並不洽當。 非共用的變數名稱都有其扮演的角色,可結合角色與型態,來命名這些變數, 例如: Point startingPoint, centerPoint;

所有的命名都應以英文(English)來書寫

變數在命名時,當使用的範圍較大者 命名可以長一點,反之 使用範圍較小 命名就短一點。

暫時儲存所用的變數或索引(index) 的命名最好短一點,我們在看的時候,就可以假設他不會被其他地方用到。 一般整數的暫存變數,會命名為 i, j, k, m, n 而字元(character)則會命名為 c, d

倘若Method 命名裡的某些單字意義,若已隱含在物件的名稱裡,就可以拿掉

line.getLength();

NOT: line.getLineLength();

Specific Naming Conventions

物件的屬性若要被存取,必須要透過 get/set 的方法

person.getName();
person.setName("Brian");

布林變數或方法的命名,應以 is 開頭

isSet, isVisible, isFinished

is 開頭已經取代了不佳的布林命名,EX:status, flag 避免使用 isStatus or isFlag 這樣過於抽象的命名,可幫助我們選擇更有意義的名字。 設定布林成員的方法,其名稱開頭必須為 set,EX: void setFound(boolean isFound); 在某些情況下,可以用 has、can、should 等字眼來取代 is,會更為恰當 boolean hasLicense(); boolean canEvaluate(); boolean shouldAbort = false;

可在負責計算的方法命名中,加入compute來表示

valueSet.computeAverage()

"Compute" 這個字眼可以立即提醒我們 這是很耗時的操作,若有重複使用,可以先把結果暫存起來 一致性的使用,對於可讀性是有幫助的

*

new[ClassName]

某物件需要透過別的物件(工廠)方法來呼叫產生,命名應為 new[ClassName]。

例如:

class PointFactory 
{     
    public Point newPoint(...)     
    {         
        ...     
    } 
} ///:~

代表Point這個物件的產生是被管制的,使用者應該使用此方法來產生物件,而不是直接 new Point();

Last updated