返回将值赋值给局部变量而不是直接返回值有什么好处?

时间:2015-01-16 23:27:16

标签: java string stringbuilder

我正在进行java代码检查。这是一个函数(片段):

String getValue() {
     String res;
     StringBuilder strBuilder = new StringBuilder();

     // More code here that sets strBuilder

     return res = strBuilder.toString();
}

首先警告不使用res的值。其次我不明白回报。他们为什么不只是return( strBuilder.toString() )。有某种优势吗?

6 个答案:

答案 0 :(得分:12)

res未使用,因此没有理由这样返回。你可以删除它:

String getValue() {
     StringBuilder bs = new StringBuilder();
     //
     // More code here that sets sb

     return bs.toString();
}

答案 1 :(得分:10)

这种代码有时可能是由于不完全删除调试工件造成的:

String getValue() {

     String res;
     StringBuilder bs = new StringBuilder();
     //
     // More code here that sets sb

     res = bs.toString();
     // Test and/or display res here
     return res; 
}

它似乎是下一轮重构和清理的好候选人。

答案 2 :(得分:6)

只是猜测,但有些(大多数?)IDE不允许您直接检查函数返回的值。使用此方案,您可以在方法的末尾放置一个断点,然后将鼠标悬停在" res"获得返回值。

答案 3 :(得分:2)

你是绝对正确的;分配给res毫无意义; return bs.toString();会做同样的事情。


P.S。 +1,不忽略编译器警告

答案 4 :(得分:0)

你不能这样做

String res = strBuilder.toString();
return res ;

或直接,

return strBuilder.toString();

现在,如果您想了解Is there any benefit提出的福利,我总是希望直接退货。

我的个人逻辑很简单
  • 你会写一行代码!!! (声明变量allover对我来说不是一种好感觉,你也不必考虑变量的名称,冲突等......那些愚蠢的事情)
  • 该值不会存储在内存中,等待GC收集它。所以,内存少见.....
  • 快速写入变量然后从中读取并返回.....更多读/写不是吗?

这些事情并不大,我不得不在你问的时候说

答案 5 :(得分:-4)

也可以写成:

String getValue() {
    return new StringBuilder().toString();
}