java模式:什么时候使用临时变量有意义
2022-09-03 10:15:08
所以我发现自己经常做一些类似以下模式的事情。而不是:
if (map.containsKey(someKey)) {
Value someValue = map.get(someKey);
...
}
为了不遍历地图两次(并且因为我知道我的地图不存储空值),我将执行以下操作:
Value someValue = map.get(someKey);
if (someValue != null) {
...
}
在我看来,这是一个有价值的模式,因为操作执行相当数量的操作,并且我认为优化器不够智能,无法优化它。Map
但后来我发现自己在其他情况下也做了类似的模式。例如,我是否应该将结果存储在临时变量中,而不是进行两次调用?显然,如果有副作用,我不能调用两次,但是从优化的角度来看,什么时候只调用一次是有意义的呢?someMethod()
someMethod()
if (someObject.someMethod() != null) {
processSomehow(someObject.someMethod());
}
我知道这与“非建设性”问题接壤,所以我正在寻找能够提出一些事实和参考的答案,而不仅仅是猜想。
- 什么时候这样做有意义,什么时候不有意义?
- 我应该如何评估 的“成本”以确定何时应使用临时变量?
someMethod()
- 对于简单的方法,如 get 方法,这是否会妨碍热点编译器或优化器,并实际生成效率较低的代码?
对于后代,我不是在问“我怎样才能提高现有程序的速度”。我试图弄清楚“当我编写未来的代码时,我应该使用什么模式”。
感谢您的任何信息。