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程式設計師都不願意重構程式碼?程式設計師
- 面試題:一道關於解構賦值和引數預設值的程式設計題面試題賦值程式設計
- JavaScript函式引數解構賦值JavaScript函式賦值
- 為什麼要成為「無敵」程式設計師?程式設計師
- 為什麼程式要從0開始計數
- 為什麼你學不好程式設計程式設計
- 中國程式設計師為什麼要跳槽?程式設計師
- 【譯】你的程式語言能做到這個嗎?(為什麼要學函數語言程式設計)函數程式設計
- 程式設計師你為什麼這麼累?程式設計師
- ES6小技巧 - 使用解構賦值設定函式引數預設值賦值函式
- java為什麼要重寫hashCode和equals方法Java
- 不用任何賦值的程式設計稱為*函式式*程式設計賦值程式設計函式
- 為什麼程式設計師千萬不要重寫程式碼?程式設計師
- 作為程式設計師為什麼要閱讀原始碼程式設計師原始碼
- 程式設計師 為什麼要堅持寫部落格程式設計師
- 自己對Java中if變數賦值的理解Java變數賦值
- 為什麼以及如何要進行架構設計權衡?架構
- Go 為什麼要設計 iota 常量?Go
- 你為什麼成為一名程式設計師?程式設計師
- 程式設計師壓力那麼大,為什麼還要選擇做程式設計師程式設計師
- 程式碼架構設計-1.為什麼要做好程式碼架構設計架構
- Java程式設計師微服務架構你必須要掌握的十個要點Java程式設計師微服務架構
- 鎖賦值給其他變數為什麼會死鎖呢?賦值變數
- 為什麼要選擇做一名程式設計師?程式設計師
- 好程式設計師:web前端解答為什麼要學JavaScript程式設計師Web前端JavaScript
- 為什麼你還是學不會程式設計程式設計
- JavaScript函數語言程式設計之為什麼要函數語言程式設計(非嚴謹技術層面的扯淡)JavaScript函數程式設計
- 程式碼重構與單元測試——對方法的引數進行重構(五)
- 為什麼 JavaScript 要設計原型模式JavaScript原型模式
- 為什麼要重構?深入探討重構的原則、範圍和時機
- 程式設計師你為什麼這麼累? - Controller規範程式設計師Controller
- 程式設計師你為什麼這麼累? - 配置規範程式設計師
- 程式設計師為什麼要持續學習(升級版)程式設計師
- “一直不明白,程式設計師為什麼要加班。”程式設計師
- 為什麼要學Python 程式設計?(附Python學習路線)Python程式設計
- 老生常談!程式設計師為什麼要閱讀原始碼?程式設計師原始碼