Java程式設計——重構-你為什麼要對引數賦值?

歐陽慍斐發表於2018-07-18

對於學過多門語言的開發者來說,應該都明白在不同語言中對引數賦值有著不同的意義,

總的來說引數有值傳遞和引用傳遞兩種,

而在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

本群提供免費的學習指導 架構資料 以及免費的解答

不懂得問題都可以在本群提出來 之後還會有職業生涯規劃以及面試指導

對本文感興趣、喜歡的歡迎關注小編,小編持續更新


相關文章