可以为返回值创建方法范围的变量在Java中有任何缺点吗?

时间:2018-04-16 13:45:39

标签: java compiler-optimization

我经常使用方法范围的变量来存储返回值,以便更容易使用条件调试器断点:

boolean retValue = some very complex condition;
return retValue;

而不是

return some very complex condition;

因为我可以将!retValue设置为断点条件,甚至不需要在更改some very complex condition后保持该条件。这同样适用于可能以不同方式初始化的boolean不同的返回值。

在使用优化进行编译时,Java编译器是否有可能不会删除这些变量?

我知道这被认为是代码异味,因为retValue可能会被final无意中覆盖,可以通过static来阻止。

2 个答案:

答案 0 :(得分:4)

  

在使用优化进行编译时,Java编译器是否有可能不会删除这些变量?

即使它们不是,也完全无关紧要。你不会以任何方式注意到它。关注这样的微观优化气味。

int本身也很少进行优化。 JIT编译器将尝试使您的代码更有效。

基本流程是这样的:编写正确,设计良好,可读的代码。 如果您发现性能问题,那么当您的软件构建在坚固的基础上时,修复起来会容易得多。

你也不会浪费时间去加速那些不需要加速的事情。

答案 1 :(得分:-1)

Java内置垃圾收集器,因此内存泄漏不存在风险。无论你是否分配一个内存地址来包含一些非常复杂的条件,Java都会使用垃圾收集器处理它,因为永远不会再使用该临时变量。