日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java in out 参数_总是避免Java中的in-out参数?

發布時間:2025/3/12 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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参数?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。