Java程式設計——重構-你為什麼要對引數賦值?
對於學過多門語言的開發者來說,應該都明白在不同語言中對引數賦值有著不同的意義,
總的來說引數有值傳遞和引用傳遞兩種,
而在Java中只有值傳遞的概念。
這意味著在方法內對引數賦值是沒有意義的。
而且還很容易引起程式碼的誤解。
對於初學者來說這一點比較重要,可能不是很容易理解,我們用例子來說明。
修改引數
我們來看個簡單的例子,在這個例子裡面我們在方法內對引數進行了修改,
這段程式碼的輸出還不至於讓人糊塗,
但如果修改的是物件的話,程式碼可能就有誤導性了
修改引數物件
為了說明這個問題,我寫了一個demo程式碼,當然程式碼是完全跑不通的。。只是為了讓程式碼更容易理解,所以才這麼寫,
這段程式碼理解上來就是,例項化了一個日期物件是4月1日,然後在方法內對日期加了一天,
然後再對這個日期(應該變成了4月2日)換車一個5月2日的物件,
這時候就可以驗證對引數賦值和對引數修改的區別所在。
如果這程式碼執行正常的話,輸出應該是下面這樣
你看,在方法內對引數賦值是沒有意義的,因為Java它傳遞的是值,而不是引用,所以並不能夠修改原引用的數值。
這對於從 C 這種可以傳引用的語言轉過來的開發者來說其實有點彆扭,
當然他們也可能會被這種程式碼誤導。
總結
Java是一門傳值語言,在coding中其實應該儘量避免對引數賦值的行為,
如果你看到程式碼中有這樣的程式碼,
請盡情重構了它吧!
歡迎工作一到五年的Java工程師朋友們加入Java架構開發:468947140
點選連結加入群聊【Java-BATJ企業級資深架構】:https://jq.qq.com/?_wv=1027&k=5zMN6JB
本群提供免費的學習指導 架構資料 以及免費的解答
不懂得問題都可以在本群提出來 之後還會有職業生涯規劃以及面試指導
對本文感興趣、喜歡的歡迎關注小編,小編持續更新
相關文章
- 【Java】程式碼重構時,為什麼禁止在方法內對物件型別的入參賦值Java物件型別賦值
- 程式設計師:你為什麼要離職?程式設計師
- 設計師為什麼要學程式設計,開發者為什麼要學設計?程式設計
- 程式設計師,你為什麼值這麼多錢?程式設計師
- Java程式設計細節-重構-為什麼 if-else 不是好程式碼Java程式設計
- 面試題:一道關於解構賦值和引數預設值的程式設計題面試題賦值程式設計
- 為什麼IT程式設計師都不願意重構程式碼?程式設計師
- 為什麼要成為「無敵」程式設計師?程式設計師
- 《Java 8函數語言程式設計》選讀:為什麼要給Java 8中加入函數語言程式設計?Java函數程式設計
- 中國程式設計師為什麼要跳槽?程式設計師
- 重構模式(二)---- 為什麼要 Refactoring模式
- 為什麼程式要從0開始計數
- JavaScript函式引數解構賦值JavaScript函式賦值
- 為什麼我要垂直對齊程式碼(你也要如此!)
- 為什麼你學不好程式設計程式設計
- 為什麼要投資程式設計師的幸福?程式設計師
- 為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?程式設計師
- 程式設計師你為什麼這麼累?程式設計師
- 【譯】你的程式語言能做到這個嗎?(為什麼要學函數語言程式設計)函數程式設計
- Java程式設計師到底值個什麼價?Java程式設計師
- PLSQL Language Reference-PL/SQL語言基礎-變數賦值-作為子程式引數來賦值SQL變數賦值
- 孩子們為什麼要學Python程式設計Python程式設計
- 作為程式設計師為什麼要閱讀原始碼程式設計師原始碼
- ES6小技巧 - 使用解構賦值設定函式引數預設值賦值函式
- java為什麼要重寫hashCode和equals方法Java
- Linux Shell程式設計(7)——變數賦值Linux程式設計變數賦值
- 為什麼程式設計師千萬不要重寫程式碼?程式設計師
- 作為一個Java 程式設計師 你應該會什麼Java程式設計師
- 為什麼我要垂直對齊程式碼
- 要麼程式設計要麼成為一段程式程式設計
- 為什麼程式設計師要儘量少寫程式碼程式設計師
- 不用任何賦值的程式設計稱為*函式式*程式設計賦值程式設計函式
- Go 為什麼要設計 iota 常量?Go
- Java重寫equals方法時為什麼要重寫hashcode方法Java
- 實現鍵值對儲存(一):什麼是鍵值對儲存,為什麼要實現它
- 為什麼以及如何要進行架構設計權衡?架構
- 為什麼你應該學習程式設計程式設計
- 為什麼說你不要獨自程式設計程式設計