A pagina 45 del codice pulito di Robert C. Martin: un manuale di agile software artigianale, Martin scrive che gli argomenti di output dovrebbero essere evitati. Ho difficoltà a comprendere il significato di "argomento di output" e il motivo per cui dovrebbero essere evitati.
L'esempio di Martin per un argomento di output appendFooter(s);
chiama la funzione public void appendFooter(StringBuffer report)
. Il suo miglioramento del codice èreport.appendFooter();
Forse è dovuto alla mancanza di un contesto di codice, ma non vedo come l'utilizzo di argomenti di output sia considerato una codifica scadente. Qualcuno potrebbe spiegare il concetto o fornire ulteriori esempi di codice per capirlo?
La seguente funzione sarebbe anche considerata un esempio di codice impuro dal suddetto principio?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Se quanto sopra è una violazione del principio di Martin di non usare argomenti di output, sarebbe meglio avere un oggetto che ha un array come campo e una funzione che può essere chiamata per ordinare l'array?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)
, ovviamente, ordinanumberArray
sul posto. Oppure crea una copia dinumberArray
, ordina la copia e restituisce la copia ordinata senza alterarenumberArray
affatto?