Auf Seite 45 von Robert C. Martins Clean Code: A Handbook of Agile Software Craftsmanship schreibt Martin, dass Ausgabeargumente vermieden werden sollten. Ich habe Probleme, die Bedeutung von "Ausgabeargument" zu verstehen und warum sie vermieden werden sollten.
Martins Beispiel für ein Ausgabeargument appendFooter(s);
ruft die Funktion auf public void appendFooter(StringBuffer report)
. Seine Verbesserung des Codes istreport.appendFooter();
Vielleicht liegt es am fehlenden Codekontext, aber ich sehe nicht, wie die Verwendung von Ausgabeargumenten als schlechte Codierung angesehen wird. Könnte jemand das Konzept erklären oder ein zusätzliches Codebeispiel angeben, um dies zu verstehen?
Würde die folgende Funktion nach dem obigen Prinzip auch als Beispiel für unreinen Code angesehen werden?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Wenn das oben Gesagte gegen Martins Prinzip verstößt, keine Ausgabeargumente zu verwenden, ist es besser, ein Objekt mit einem Array als Feld und einer Funktion zu haben, die zum Sortieren des Arrays aufgerufen werden kann.
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)
Natürlich ist allesnumberArray
in Ordnung. Oder wird eine Kopie erstelltnumberArray
, die Kopie sortiert und die sortierte Kopie zurückgegeben, ohne Änderungen vorzunehmennumberArray
?