Trên trang 45 của Bộ luật sạch của Robert C. Martin: Cẩm nang về thủ công phần mềm linh hoạt, Martin viết rằng nên tránh các đối số đầu ra. Tôi gặp khó khăn trong việc hiểu ý nghĩa của "đối số đầu ra" và tại sao chúng nên được tránh.
Ví dụ của Martin cho một đối số đầu ra appendFooter(s);
gọi hàm public void appendFooter(StringBuffer report)
. Cải tiến mã của anh ấy làreport.appendFooter();
Có thể đó là do thiếu bối cảnh mã, nhưng tôi không thấy cách sử dụng các đối số đầu ra được coi là mã hóa kém. Ai đó có thể giải thích khái niệm hoặc đưa ra ví dụ bổ sung của mã để hiểu điều này?
Các chức năng sau đây cũng sẽ được coi là một ví dụ về mã ô uế theo nguyên tắc trên?
int[] numberArray = {3, 5, 7, 1};
sortArray(numberArray);
Nếu ở trên là vi phạm nguyên tắc không sử dụng đối số đầu ra của Martin, thì tốt hơn là có một đối tượng có một mảng là một trường và một hàm có thể được gọi để sắp xếp mảng?
ObjectWithArrayField numberArray = new ObjectWithArrayField(3, 5, 7, 1);
numberArray.sort();
sortArray(numberArray)
, tất nhiên, sắp xếpnumberArray
tại chỗ. Hoặc nó tạo một bản saonumberArray
, sắp xếp bản sao và trả lại bản sao đã sắp xếp mà không thay đổinumberArray
gì cả?