创建新对象并将其返回或在return语句中创建新对象更好吗?

mhe*_*haw 6 java

例如:

public Person newPerson() {
  Person p = new Person("Bob", "Smith", 1112223333);
  return p;
}
Run Code Online (Sandbox Code Playgroud)

而不是:

public Person newPerson() {
  return new Person("Bob", "Smith", 1112223333);
}
Run Code Online (Sandbox Code Playgroud)

一个比另一个更有效吗?

Boz*_*zho 17

在性能方面没有任何区别可以让你选择一个而不是另一个.

  • 为了调试,前者更好 - 即当您想要跟踪执行时,或者在创建和返回之间记录一些信息.
  • 为了便于阅读(但这是主观的) - 后者更好.

一般来说,我会为后者提供建议,无论何时需要调试,都要临时切换到第一个(两行)变体.

  • 它归结为如果您在可读性或可调试性方面进行了优化,那么人们可能会认为(通过人类)读取的代码远远超过了调试代码. (3认同)
  • 好吧,对我来说,立即归还它更具可读性.但是当使用调试器进行跟踪时,将它分成两行会更方便.也许在两者之间记录调试信息. (2认同)

Ian*_* C. 8

在返回之前分配给临时变量使您有机会在newPerson()中进行错误检查和更正.返回新调用需要newPerson()方法的调用者捕获并从错误中恢复.

  • 如果进一步访问变量,那么毫无疑问,因为该方案将不再存在. (2认同)