Robert C. Martin의 Clean Code : Agile Software Craftsmanship 핸드북 45 페이지에서 Martin은 출력 인수를 피해야한다고 썼습니다. "출력 인수"의 의미를 이해하는 데 어려움을 겪고 있으며 왜 피해야합니까?
출력 인수에 대한 Martin의 예제 appendFooter(s);
는 함수를 호출합니다 public void appendFooter(StringBuffer report)
. 코드의 그의 개선은report.appendFooter();
어쩌면 코드 컨텍스트가 부족하기 때문일 수 있지만 출력 인수를 사용하는 것이 어떻게 코딩이 좋지 않은지 알 수 없습니다. 누군가 개념을 설명하거나 이것을 이해하기 위해 코드의 예를 추가 할 수 있습니까?
위의 원칙에 따라 다음 함수가 부정한 코드의 예로 간주됩니까?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
위의 출력 인수를 사용하지 않는 Martin의 원칙을 위반하는 경우 배열을 필드로 사용하는 개체와 배열을 정렬하기 위해 호출 할 수있는 함수를 갖는 것이 더 낫습니까?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)
물론numberArray
제자리에 정렬 됩니다. 아니면의 사본을 만들고, 사본을numberArray
정렬하고, 정렬 된 사본을 전혀 변경하지 않고 반환numberArray
합니까?