Robert C. Martin's Clean Code:A Handbook of Agile Software Craftsmanshipの45ページで、Martinは出力引数を避けるべきであると書いています。「出力引数」の意味と、それらを避けるべき理由を理解するのに苦労しています。
出力引数のMartinの例appendFooter(s);は、関数を呼び出しますpublic void appendFooter(StringBuffer report)。彼のコードの改善はreport.appendFooter();
コードコンテキストが不足していることが原因の可能性がありますが、出力引数の使用がコーディングの悪さと見なされる方法はわかりません。誰かが概念を説明したり、これを理解するためのコードの追加例を与えることができますか?
上記の原則により、次の関数も汚れたコードの例と見なされますか?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
上記が出力引数を使用しないというマーティンの原則に違反する場合、フィールドとして配列を持つオブジェクトと、配列をソートするために呼び出すことができる関数を持つ方が良いでしょうか?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)、もちろん、その場でソートnumberArrayします。それとも、のコピーを作成し、コピーをnumberArrayソートし、numberArrayまったく変更せずにソートされたコピーを返しますか?