Java 如何命名计算属性?

Java 如何命名计算属性?,java,attributes,coding-style,Java,Attributes,Coding Style,我正在寻找一些常见的约定——如果有的话——来命名“计算”属性。所谓“计算”是指通过调用特定方法来设置它们的值。通常,这些属性不会在构造函数中显示为参数,尽管它们可能在构造函数中初始化 以下是一个计算年龄的班级人员示例: public class Person { Date birthday; int age; Person (Date birthday) { this.birthday = birthday; age = new Date(new

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

以下是一个计算年龄的班级人员示例:

public class Person {

   Date birthday;
   int age;

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

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

在开发过程中,“真实”属性通常使用getter和setter方法编码为属性(如果它是只读属性,则仅使用getter方法,如在您的示例中为不应更改的人的brithday)派生属性只有getter,因此从外部看不到属性的基本性质,这也是正确的OO设计。内部机制对外部世界是看不见的

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

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


如果使用Bean机制发送属性更改事件,请记住,当您更改一个源属性时,也要触发派生属性的属性更改事件。在正确的面向对象设计中,对象具有属性,在稍后的阶段,这些属性被标识为“实”属性或“派生”属性

在开发过程中,“真实”属性通常使用getter和setter方法编码为属性(如果它是只读属性,则仅使用getter方法,如在您的示例中为不应更改的人的brithday)派生属性只有getter,因此从外部看不到属性的基本性质,这也是正确的OO设计。内部机制对外部世界是看不见的

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

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


如果您使用Bean机制发送属性更改事件,请记住在更改一个源属性时也要触发派生属性的属性更改事件。举个例子,我不明白您的意思。此外,这可能是非常基于意见的。刚刚编辑过,我也对注释标记表示此类属性感兴趣。它们通常被称为瞬态属性。您希望有什么样的约定?看起来不错,我不确定它的
age
名称是否应该不同。可能是派生值?举个例子,我不明白你的意思。此外,这可能是非常基于意见的。刚刚编辑过,我也对注释标记表示此类属性感兴趣。它们通常被称为瞬态属性。您希望有什么样的约定?看起来很不错,我不确定它的
age
名称是否应该不同。可能是派生值?