我经常使用方法范围的变量来存储返回值,以便更容易使用条件调试器断点:
boolean retValue = some very complex condition;
return retValue;
而不是
return some very complex condition;
因为我可以将!retValue
设置为断点条件,甚至不需要在更改some very complex condition
后保持该条件。这同样适用于可能以不同方式初始化的boolean
不同的返回值。
在使用优化进行编译时,Java编译器是否有可能不会删除这些变量?
我知道这被认为是代码异味,因为retValue
可能会被final
无意中覆盖,可以通过static
来阻止。
答案 0 :(得分:4)
在使用优化进行编译时,Java编译器是否有可能不会删除这些变量?
即使它们不是,也完全无关紧要。你不会以任何方式注意到它。关注这样的微观优化气味。
int
本身也很少进行优化。 JIT编译器将尝试使您的代码更有效。
基本流程是这样的:编写正确,设计良好,可读的代码。 如果您发现性能问题,那么当您的软件构建在坚固的基础上时,修复起来会容易得多。
你也不会浪费时间去加速那些不需要加速的事情。
答案 1 :(得分:-1)
Java内置垃圾收集器,因此内存泄漏不存在风险。无论你是否分配一个内存地址来包含一些非常复杂的条件,Java都会使用垃圾收集器处理它,因为永远不会再使用该临时变量。