如何命名计算属性?

时间:2013-08-30 14:18:32

标签: java attributes coding-style

我正在寻找一些常见的约定 - 如果有的话 - 在“计算”时命名属性。 “计算”是指通过调用特定方法设置它们的值。通常,这些属性不会在构造函数中显示为参数,尽管它们可能在其中初始化。

以下是计算年龄的类Person的示例:

public class Person {

   Date birthday;
   int age;

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

1 个答案:

答案 0 :(得分:3)

在适当的面向对象设计中,对象具有属性,在稍后阶段,属性被标识为“真实”属性或“派生”属性。

在开发过程中,通常使用getter和setter方法将“真实”属性编码为属性(或者如果它是一个只读属性,如果在你的例子中是一个不假设的人的brithday,那么这只是一个getter方法)是正常的。改变)和衍生的属性只有吸气剂,因此从外部看不到属性的基本性质,这也是适当的OO设计。内部机制对外界是不可见的。

在优化性能期间,可能会决定将派生值实际存储在对象内的变量中,而不是在调用getter时始终计算。

当被调用的源属性之一的setter也应该在派生属性存储在私有变量中时更新。

如果您使用Bean mechanisme发送属性更改事件,请记住在更改其中一个源属性时也触发派生属性的属性更改事件