En la página 45 del Código limpio de Robert C. Martin: Un manual de artesanía ágil de software, Martin escribe que los argumentos de salida deben evitarse. Tengo problemas para entender el significado de "argumento de salida" y por qué deberían evitarse.
El ejemplo de Martin para un argumento de salida appendFooter(s);llama a la función public void appendFooter(StringBuffer report). Su mejora del código esreport.appendFooter();
Tal vez se deba a la falta de contexto de código, pero no veo cómo el uso de argumentos de salida se considera una codificación deficiente. ¿Podría alguien explicar el concepto o dar un ejemplo adicional de código para entender esto?
¿La siguiente función también se consideraría un ejemplo de código inmundo por el principio anterior?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Si lo anterior es una violación del principio de Martin de no usar argumentos de salida, ¿sería mejor tener un objeto que tenga una matriz como campo y una función a la que se pueda llamar para ordenar la matriz?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray), por supuesto, se ordenanumberArrayen su lugar. ¿O hace una copia denumberArray, ordena la copia y devuelve la copia ordenada sin alterarnumberArrayen absoluto?