java in out 参数_总是避免Java中的in-out参数?
毫無疑問,輸入輸出參數會導致代碼混亂,因為它們可能會增加意外/不可預測的副作用.
所以,許多優秀的程序員說:
避免使用in-out參數來更改可變方法參數.希望保持參數不變.
對于一個完美主義程序員來說,他希望他的代碼是最干凈和最容易理解的,那么這個"規則"是否必須適用于所有情況?
例如,假設一種將元素添加到簡單列表的基本方法,有兩種方法:
第一種方式(帶有輸入參數):
private void addElementsToExistingList(List myList){
myList.add("Foo");
myList.add("Bar");
}
并且來電者是:
List myList = new ArrayList();
//.......Several Instructions (or not) .....
addElementsToExistingList(myList);
沒有參數的第二種方式:
private List addElementsToExistingList(List originalList){
List filledList = new ArrayList(originalList); //add existing elements
filledList.add("Foo");
filledList.add("Bar");
return filledList;
}
并且來電者是:
List myList = new ArrayList();
//.......Several Instructions (or not) .....
myList.addAll(addElementsToExistingList(myList));
第二種方式的優點:
參數未被修改=>沒有新代碼閱讀器出現意外副作用的風險.
第二種方式:
非常冗長,可讀性很差......
當然,你會告訴我,對于像這個簡單的代碼,第一種方法真的更方便.
但是,如果我們不考慮任何概念/代碼的難度,那么對于任何讀者(無論是否為初學者),我都認為第二種方式更具邏輯性和顯而易見性.
然而,它違反了CQS原則,該原則認為"命令"方法具有具有潛在的空白返回(但是因為它是慣例而允許)副作用和具有返回類型且沒有副作用的"查詢"方法.
那么,激勵程序員采用什么呢?兩個混合代碼案例?或者保持"法律"期望始終避免進出參數......
(當然,添加Element的方法被命名用于表示示例,并且在實際代碼中將是一個錯誤的名稱選擇).
總結
以上是生活随笔為你收集整理的java in out 参数_总是避免Java中的in-out参数?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鸿蒙IPC摄像机,华为鸿蒙OS来了,海雀
- 下一篇: java panel frame_Jav