На странице 45 «Чистого кода Роберта Мартина: Справочник по мастерству гибкого программного обеспечения» Мартин пишет, что выходных аргументов следует избегать. У меня возникают проблемы с пониманием значения «выходной аргумент» и почему их следует избегать.
Пример Мартина для выходного аргумента 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
?