在调用函数两次和将返回值存储在变量中之间选择哪一个?

sub*_*bbu 5 java optimization

我有以下场景..我多次遇到类似的场景。以下两个选项中哪个更可取?

选项1:

String result = ( getDetails(...) == null ) ? "" : getDetails(...);
Run Code Online (Sandbox Code Playgroud)

选项 2:

String returnValue = getDetails(...);
String result = ( returnValue == null ) ? "" : returnValue;
Run Code Online (Sandbox Code Playgroud)

哪个更可取和/或更好的做法。?

san*_*hat 1

选项2:更好

选项 1:导致额外的方法调用,这种情况应该始终避免,除非getDetails(...)是 getter 方法(一种返回某些内容的单行方法)

如果深入研究微观优化,方法调用通常会导致

  • 为方法变量分配堆栈
  • 跳转指令集

这是许多管理费用的一部分。正如很多人所说,这种性能优化应该留给编译器,并且代码应该写得更具可读性。