Na stronie 45 Czystego kodu Roberta C. Martina: Podręcznik do spraw zwinnego oprogramowania Martin pisze, że należy unikać argumentów wyjściowych. Mam problem ze zrozumieniem znaczenia „argumentu wyjściowego” i dlaczego należy go unikać.
Przykład Martina dla argumentu wyjściowego appendFooter(s);wywołuje funkcję public void appendFooter(StringBuffer report). Jego poprawa kodu toreport.appendFooter();
Może wynika to z braku kontekstu kodu, ale nie rozumiem, jak używanie argumentów wyjściowych jest uważane za złe kodowanie. Czy ktoś mógłby wyjaśnić tę koncepcję lub podać dodatkowy przykład kodu, aby to zrozumieć?
Czy powyższa zasada byłaby również uważana za przykład nieczystego kodu na podstawie powyższej zasady?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Jeśli powyższe jest pogwałceniem zasady Martina, że nie używa argumentów wyjściowych, czy lepiej byłoby mieć obiekt, który ma tablicę jako pole i funkcję, którą można wywołać w celu posortowania tablicy?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray), oczywiście, układa sięnumberArrayna miejscu. Czy też tworzy kopięnumberArray, sortuje kopię i zwraca posortowaną kopię bez żadnych zmiannumberArray?