2013-08-30 37 views
0

我正在尋找一些常用的約定 - 如果有的話 - 在「計算」時命名屬性。 「計算」我的意思是他們的值是通過調用一個特定的方法來設置的。通常,這些屬性不會在構造函數中作爲參數出現,儘管它們可能在其中被初始化。如何命名計算屬性?

這裏是一類人的實例,其中的年齡將被計算:

public class Person { 

    Date birthday; 
    int age; 

    Person (Date birthday) { 
     this.birthday = birthday; 
     age = new Date(new Date().getTime() - birthday.getTime()).getYear(); 
    } 
} 
+1

舉一個例子,我不明白你的意思。此外,這可能是非常基於意見的。 –

+0

剛剛編輯,我也對評論標籤感興趣,以表明這些屬性。 – hpid91

+0

他們通常被稱爲瞬態屬性。 – Marcelo

回答

2

在適當的面向對象的設計,對象具有的屬性,在後面的階段的屬性被確定爲「真實的」的屬性或「派生」屬性。

在開發過程中,「真實」屬性被編碼爲具有getter和setter方法的屬性是正常的(或者只是一個getter方法,如果它是一個只讀屬性,就像你的例子中的一個人的brithday應該改變)並且派生屬性只有吸氣劑,因此從外部看不到屬性的基本屬性,這也是適當的OO設計。內部機制對外界是不可見的。

在對性能進行優化期間,可能會決定實際將派生值存儲在對象內部的變量中,並且在調用getter時不會總是進行計算。

對其中一個被調用的源屬性的setter也應該在派生屬性存儲在一個私有變量中時更新派生屬性。

如果您使用的Bean mechanisme發送屬性更改事件,記得也觸發屬性更改事件派生屬性,當您更改源屬性之一