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

例如:

public Person newPerson() { Person p = new Person("Bob", "Smith", 1112223333); return p; } 

而不是:

 public Person newPerson() { return new Person("Bob", "Smith", 1112223333); } 

一个比另一个更有效吗?

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

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

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

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

没有人比另一个人更有效率,JIT会在运行时将其内联到最有效的位置。

在一个理智的世界中,它们将编译为完全相同的字节码,因此就性能而言它们是相同的。 然后唯一的区别是人类:

创建临时变量使调试变得更容易:您可以在return语句上放置断点并检查p的值。 在单行版本中,这很难做到。

在一行中完成它可以消除变量,降低复杂性,使代码更容易阅读。

实际上,我会把它写成一行,在最坏的情况下,如果我遇到调试问题,我会创建一个临时变量。 此外,不是unit testing应该消除调试的需要吗? 🙂

第二种选择更短,更容易阅读。

我怀疑任何体面的Java编译器都会为第一个选项创建效率较低的代码。

一个并不比另一个更有效,但直接返回创建的对象可能更清晰,因为你使用的临时变量较少。 如果必须使用临时变量,请将其设置为final并对其进行适当命名。