Na página 45 do Código Limpo de Robert C. Martin: Manual do Artesanato em Software Ágil, Martin escreve que os argumentos de saída devem ser evitados. Estou tendo problemas para entender o significado de "argumento de saída" e por que eles devem ser evitados.
O exemplo de Martin para um argumento de saída appendFooter(s);
chama a função public void appendFooter(StringBuffer report)
. Sua melhoria do código éreport.appendFooter();
Talvez seja devido à falta de contexto do código, mas não vejo como usar argumentos de saída é considerado uma codificação ruim. Alguém poderia explicar o conceito ou dar um exemplo adicional de código para entender isso?
A função a seguir também seria considerada um exemplo de código impuro pelo princípio acima?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Se o exposto acima é uma violação do princípio de Martin de não usar argumentos de saída, seria melhor ter um objeto que tenha uma matriz como um campo e uma função que possa ser chamada para classificar a matriz?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)
, é claro, classificanumberArray
no lugar. Ou ele faz uma cópianumberArray
, classifica a cópia e retorna a cópia classificada sem alterarnumberArray
nada?