談?wù)勚貥?gòu)

? ? ? 又隔了一天寫博客,哎,事與愿違!今天我們來談?wù)勚貥?gòu)這個(gè)話題,我們首先要認(rèn)清一個(gè)事實(shí)是任何傻瓜都可以寫出可運(yùn)行的代碼,唯有寫出讓人類容易理解的代碼才是優(yōu)秀的程序員,會寫java代碼的人多的很,隨便一個(gè)從培訓(xùn)機(jī)構(gòu)出來的初中生都可以,工作5年的你難不成跟他們一樣僅限于會功能實(shí)現(xiàn)嗎?

? ? ? 本次重構(gòu)很多觀點(diǎn)來自于《重構(gòu)-改善既有代碼》與《代碼整潔之道》這兩本書,大伙可以買來看看,很多觀點(diǎn)我們都知道,只是沒有形成一個(gè)統(tǒng)一的總結(jié)。首先我先說下我們重構(gòu)的一個(gè)簡單理念要小步前進(jìn)、快速迭代,怎么快速迭代呢?就是要有盡量完善的單元測試來覆蓋你的修改,沒有這個(gè)我們就不要去想著重構(gòu)了,太TM危險(xiǎn)了。

?這次重構(gòu)主要講的點(diǎn):

?1.不要有長函數(shù),如果你的一個(gè)函數(shù)一屏幕都展示不完或者如果你需要用注釋來解釋你寫的代碼的業(yè)務(wù)時(shí),那就說明你該拆分你的代碼了,原因很簡單,復(fù)用性不夠,可讀性太差,不利于維護(hù),當(dāng)然還有一點(diǎn)就是函數(shù)調(diào)用千萬不允許太深了,原因就是你跟誰捉迷藏呢?打算玩后面接你代碼的人嗎?

2.盡可能去除臨時(shí)變量,原因就是臨時(shí)變量傳來傳去,代碼可讀性很受影響,我們可以使用函數(shù)方法替換他。

3.每個(gè)方法盡量單一職責(zé),這樣代碼的復(fù)用性才會高。

4.不要讓一個(gè)臨時(shí)變量被賦值超過一次,如果這樣,說明這個(gè)變量承擔(dān)一個(gè)以上的職責(zé),第二個(gè)變量該怎么命名怎么命名,不要嫌麻煩?;蛘哂貌樵兲鎿Q了這個(gè)變量。

5.所有變量名方法名類型命名一定要有講究,最好是一看名字就知道這個(gè)東西是干什么的了,起到注釋的作用,還有就是實(shí)體類一定要是名詞、方法使用動(dòng)詞。

6.不要使用switch或三個(gè)以上的if/else,這個(gè)是很驚悚的,如果是這樣的話我們可以考慮狀態(tài)模式,或者如果很多就考慮使用數(shù)據(jù)庫之類的技術(shù)吧,不要懶!

7.當(dāng)類作為參數(shù)時(shí)候不允許重新賦值,因?yàn)閖ava的方法傳遞方式是值傳遞,原理是拷貝了一份地址給參數(shù)了,你重新賦一個(gè)新的對象是給這個(gè)對象是有問題的。

8.要盡量保證系統(tǒng)不存在相同邏輯塊,有這么一句話,第一次做盡管做,第二次不想做也做,第三次我們就得重構(gòu)了。

9.參數(shù)不要超過三個(gè),這樣會導(dǎo)致測試覆蓋率成倍增加,而且很容易傳遞錯(cuò)。

11.還有將丑陋的try/catch盡量單獨(dú)一個(gè)方法處理,try/catch本來就不是業(yè)務(wù)需要關(guān)心的東西,我們應(yīng)該盡量讓他跟邏輯分離。

。。。。。。

還有很多,想到再加,重構(gòu)很重要,雖然不是什么銀彈,但是他是讓你的代碼保持可拓展性的根本。還有,這只是一個(gè)開始,這是一門很深的學(xué)問,還有一個(gè)重要的原則是我們做這件事的時(shí)候不能為了重構(gòu)而重構(gòu),我們應(yīng)該是當(dāng)有新需求的時(shí)候,嗅到了這塊邏輯有變質(zhì)的風(fēng)險(xiǎn)的時(shí)候才去重構(gòu),深度測試,重構(gòu)跟需求本來就是螺旋前進(jìn)的過程,還有人說的我的代碼運(yùn)行好好的,為什么要重構(gòu)呢?這個(gè)問題又回到了之前的問題了,寫的代碼是給人看的,不是說正常邏輯走通了就行了,其中隱藏了無數(shù)bug你清楚嗎?說不定你經(jīng)過重構(gòu)與測試,這無數(shù)個(gè)bug就消失了,一下說這么多是不是有點(diǎn)接受不了,沒關(guān)系,仔細(xì)琢磨琢磨。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容