Есть ли какая-либо польза от возврата результата назначения значения локальной переменной, а не значения напрямую?

Я выполняю проверку кода Java. Вот функция (фрагмент):

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

     // More code here that sets strBuilder

     return res = strBuilder.toString();
}

Сначала появляется предупреждение о том, что значение res не используется. Во-вторых, я не понимаю возвращения. Почему они не просто return( strBuilder.toString() ). Есть ли какие-то преимущества?

Ответы

Ответ 1

res не используется, поэтому нет причин возвращаться так. Вы можете удалить его:

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

     return bs.toString();
}

Ответ 2

Такой код иногда может быть вызван неполным удалением артефактов отладки:

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; 
}

Это, безусловно, кажется хорошим кандидатом на следующий раунд рефакторинга и очистки.

Ответ 3

Просто гадать, но некоторые (большинство?) IDE не позволяют вам напрямую проверять значение возвращаемых функций. С помощью этой схемы вы можете поместить точку останова в конце метода и наведите указатель мыши на "res", чтобы получить возвращаемое значение.

Ответ 4

Ты абсолютно прав; присвоение res не имеет смысла; return bs.toString(); будет делать то же самое.


P.S. +1 для игнорирования предупреждений компилятора.

Ответ 5

Вы не можете сделать

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

Или напрямую,

return strBuilder.toString();

Теперь, если вы хотите узнать о преимуществах по вашему запросу Is there any benefit, я всегда предпочитаю прямое возвращение. Моя личная логика проста:

  • Вы собираетесь написать одну строку меньше кода!!! (объявление переменных allover для меня не очень хорошее, а также вам не нужно думать о имени переменной, конфликтах и ​​т.д. эти глупые вопросы)
  • Значение не будет сохранено в памяти и дождитесь, когда GC соберет его. SO, меньше памяти см......
  • Быстрая запись в переменную, а затем чтение из нее и возврат..... больше читать/писать не так ли?

Те вещи не большие, я должен был сказать, когда вы спросили

Ответ 6

Также может быть записан как:

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