在Robert C. Martin的“清洁代码:敏捷软件技巧手册”的第45页上,Martin写道,应避免使用输出参数。我在理解“输出参数”的含义以及为什么应避免使用它们时遇到了麻烦。
马丁的输出参数示例appendFooter(s);
调用了function 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
?