2013-08-30 41 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发送属性更改事件,记得也触发属性更改事件派生属性,当您更改源属性之一