1

我有一个方法可以返回一些对象,比如说一个字符串对象。

现在我有两种可能性之一

public String someMethod(){

String data=getData(); //This method returns string

return data;
}

或者

public String someMethod(){

return getData();//This method returns string

}

考虑到性能/可扩展性,以上哪一项是更好的做法,也是更好的做法。请给出支持答案的观点。谢谢你的时间。

4

9 回答 9

4

如果您不打算修改变量,那么没有理由创建它的本地副本只是为了返回它。

代码的第二个版本更干净、更简洁,这通常是首选。

如果您在性能方面不那么明智,那么优化的编译器很可能会为您进行转换,它们是等效的。

于 2012-04-26T15:20:35.200 回答
1

与任何编程语言一样,您希望尽可能简洁明了地表达它。它们都将编译成完全相同的东西,但后者更具可读性并且省略了不需要的代码行。

于 2012-04-26T15:20:56.927 回答
1

我相信编译器会将第二个变成第一个,从而为您优化它。它不会对所有事情都这样做,但在大多数情况下会这样做。但这一切都取决于可读性。无论你能更快地捕捉到什么,我都会说坚持下去。但它们都是一样的。只有第一个不同的是,您为指向该字符串的指针创建了一个变量,因此“浪费”了不必要的内存。但同样,编译器可能会在这种情况下优化它。

于 2012-04-26T15:21:55.863 回答
1

这将几乎完全归结为风格(第一个是蹩脚的风格——不要创造你不会使用的东西)。任何优秀的编译器都会注意到,通过消除未使用的局部变量,可以进行一些优化。很容易陷入你认为是“优化”的微小调整中,但实际上只是让开发人员感到聪明和浪费时间的一种尝试。即使编译器没有将第一个代码段优化为第二个代码段(实际上它可能会进一步优化)。

在性能方面,更宏观的架构决策才是真正会产生影响的,而不是一个未使用的分配/分配操作。不要陷入逐行优化的困境。这些优化最好留给编译器。

于 2012-04-26T15:22:24.540 回答
0

第二个是更好的选择。在第一个中,您的可变数据没有实际用途。反正我觉得这个东西如果编译了,反正编译器会把第一个改成第二个。

于 2012-04-26T15:20:42.807 回答
0

第二个是更好的选择,因为它需要更少的输入并减少不必要的代码。始终尝试使您的代码尽可能易读。

于 2012-04-26T15:21:27.173 回答
0

第二种解决方案+1。写得越少,发展得越好!

于 2012-04-26T15:23:03.287 回答
0

一个first

在编写简洁易懂的代码方面是好的,但它memory在初始化 Sring 对象时使用更多 编译器将切换到first反正,第二当任何其他开发人员要编辑时,他可以直接在第一次初始化下添加代码,如果他需要debug它也更好。
有利于代码管理。

一个second

performance在没有额外对象初始化的情况下更好,而只是输出所需的返回数据。但这在代码编写方面并不是一个好的做法,但在编写代码的性能和速度方面却是一个好习惯。

于 2012-04-26T15:23:51.627 回答
0

第一个可能更直观(在大学里,他们展示了为什么,我认为这就是你怀疑这一点的原因)只是为了学习和调试任何可能的异常,但总的来说,第二个是首选和更好的。

于 2012-04-26T15:24:32.430 回答