这是java中更好的做法

时间:2012-04-26 15:17:17

标签: java

我有一个方法可以返回一些对象,比如一个 String 对象。

现在我有两个可能性

public String someMethod(){

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

return data;
}

public String someMethod(){

return getData();//This method returns string

}

以上哪一项是更好的做法,考虑到性能/可扩展性也更好。请提供您的意见支持答案。谢谢你的时间。

9 个答案:

答案 0 :(得分:4)

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

代码的第二个版本更清晰,更简洁,通常是首选。

优化的编译器很可能会为您进行转换,如果您没有这样的性能,那么它们是等效的。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

在性能方面,较大图片的体系结构决策实际上会产生影响,而不是一个未使用的分配/分配操作。不要陷入逐行优化的困境。有可能那些优化最好留给编译器。

答案 4 :(得分:0)

第二个是更好的选择。在第一个中,您的可变数据不起作用。无论如何,我认为如果这个东西被编译,编译器无论如何都会将第一个改为第二个。

答案 5 :(得分:0)

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

答案 6 :(得分:0)

+1为第二个解决方案。你写的越少,你的发展就越好!

答案 7 :(得分:0)

first一个:

在编写简洁且易于理解的代码方面做得很好,但它在初始化Sring对象时使用了更多memory 编译器无论如何都会切换到first,其次当任何其他开发人员想要编辑时,他可以在第一次初始化时直接添加代码,如果他需要debug它也更好。
适合代码管理。

second一个:

在没有其他对象初始化的performance中更好,但只输出所需的返回数据。但就代码编写而言,这不是一个好习惯,但它在编写代码时的性能和快速性方面。

答案 8 :(得分:0)

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