java string stringbuilder

java - ¿Hay algún beneficio en devolver el resultado de asignar un valor a una variable local en lugar del valor directamente?



string stringbuilder (6)

Estoy haciendo una inspección de código java. Aquí hay una función (fragmento):

String getValue() { String res; StringBuilder strBuilder = new StringBuilder(); // More code here that sets strBuilder return res = strBuilder.toString(); }

Primero hay una advertencia de que no se usa el valor de res. En segundo lugar no entiendo el regreso. ¿Por qué no return( strBuilder.toString() ) ? ¿Hay algún tipo de ventaja?


Ese tipo de código a veces puede resultar de la eliminación incompleta de los artefactos de depuración:

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

Sin duda, parece ser un buen candidato para la próxima ronda de refactorización y limpieza.


Estás absolutamente en lo correcto; la asignación a res no tiene sentido; return bs.toString(); Haría lo mismo.

PS +1 para no ignorar las advertencias del compilador .


No puedes hacer tampoco

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

O directamente,

return strBuilder.toString();

Ahora, si desea obtener información sobre los beneficios que solicitó. Is there any benefit , siempre prefiero la devolución directa? Mi lógica personal es tan simple como

  • Vas a escribir una línea menos código !!! (Declarar variables allover no es una buena sensación para mí y tampoco tienes que pensar en el nombre de la variable, conflictos, etc., esas tonterías)
  • El valor no se almacenará en la memoria y espere a que el GC recoja. SO, menos memoria ver .....
  • Escribir rápidamente en una variable y luego leer de ella y devolver ... más lectura / escritura, ¿no es así?

Esas cosas no son nada grandes, tuve que decir como me pediste.


Solo adivinando, pero algunos IDE (¿la mayoría?) No le permiten inspeccionar directamente el valor de los rendimientos de la función. Con este esquema, podría poner un punto de interrupción al final del método, y pasar el mouse sobre "res" para obtener el valor de retorno.


También se puede escribir como:

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


res no se utiliza, por lo que no hay razón para volver así. Puedes eliminarlo:

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