我应该创建一个新变量还是始终从 class 对象访问数据?
Should I create a new variable or always access the data from a class object?
让我们从一个例子开始(只是为了解释)
public void mySecretOperation() {
User user = new User();
if (user.getAge() > 2 && user.getAge() < 5) {
//TODO : do something...
}
if (user.getAge() > 12 && user.getAge() < 15) {
//TODO : do something...
}
if (user.getAge() > 31 && user.getAge() < 55) {
//TODO : do something...
}
if (user.getAge() > 78 && user.getAge() < 89) {
//TODO : do something...
}
}
另一种选择是 int age = user.getAge();
,然后到处使用 age
而不是 user.getAge()
。
所以,性能方面(或者让我们考虑 space 复杂性)会在那里
有什么区别吗?
我们能说一种方法优于另一种方法吗?
我知道这是一个菜鸟问题,仍然很想知道。
尽管它在性能方面有所不同,但几乎可以忽略不计。所以在性能方面你不会通过重构得到太多。
由于接收后没有进行任何逻辑操作(如increasing/decreasing等),因此可以多次调用getter。毕竟,您正在获取一个变量,该变量通过该方法返回。
除非你在你的 getter 中做一些昂贵的操作,否则你的代码对我来说看起来没问题。
请注意,如果您处于多线程环境中,最好使用 getter,因为您获取的变量有可能被修改。
我们能说一种方法比另一种更好吗?
我会说使用新变量就好像你需要改变你想要访问的方法一样,例如 user.getYearOfBirth() 而不是 user.getAge(),你需要改变很多如果将其分配给变量,则代码中的部分而不是一次。
它有助于提高速度。它只需要处理一次语句而不是每次。
让我们从一个例子开始(只是为了解释)
public void mySecretOperation() {
User user = new User();
if (user.getAge() > 2 && user.getAge() < 5) {
//TODO : do something...
}
if (user.getAge() > 12 && user.getAge() < 15) {
//TODO : do something...
}
if (user.getAge() > 31 && user.getAge() < 55) {
//TODO : do something...
}
if (user.getAge() > 78 && user.getAge() < 89) {
//TODO : do something...
}
}
另一种选择是 int age = user.getAge();
,然后到处使用 age
而不是 user.getAge()
。
所以,性能方面(或者让我们考虑 space 复杂性)会在那里 有什么区别吗?
我们能说一种方法优于另一种方法吗?
我知道这是一个菜鸟问题,仍然很想知道。
尽管它在性能方面有所不同,但几乎可以忽略不计。所以在性能方面你不会通过重构得到太多。
由于接收后没有进行任何逻辑操作(如increasing/decreasing等),因此可以多次调用getter。毕竟,您正在获取一个变量,该变量通过该方法返回。
除非你在你的 getter 中做一些昂贵的操作,否则你的代码对我来说看起来没问题。
请注意,如果您处于多线程环境中,最好使用 getter,因为您获取的变量有可能被修改。
我们能说一种方法比另一种更好吗? 我会说使用新变量就好像你需要改变你想要访问的方法一样,例如 user.getYearOfBirth() 而不是 user.getAge(),你需要改变很多如果将其分配给变量,则代码中的部分而不是一次。
它有助于提高速度。它只需要处理一次语句而不是每次。