重構(gòu)壞味道:基本類型偏執(zhí)(癡迷)

基本類型偏執(zhí)(癡迷)

癥狀

有時(shí)候你會(huì)看到某個(gè)類里有很多基本類型字段,但是你隱約的能區(qū)分出某些字段好像應(yīng)該是在一起的,像是結(jié)合手機(jī)號(hào),區(qū)號(hào)的電話號(hào)碼,描述某個(gè)日期范圍的開始日期,結(jié)束日期。他們并沒有一個(gè)真實(shí)的載體(手機(jī)號(hào)Class,范圍Class),而是通過零散的基本類型(String,Int)分散在那個(gè)很大的類中模擬那個(gè)上面提到的手機(jī)號(hào),日期范圍.


基本類型

病因

有一種情況是是在系統(tǒng)剛開始的時(shí)候 程序員可能會(huì)說“只是一個(gè)存儲(chǔ)數(shù)據(jù)的字段,創(chuàng)建一個(gè)基本類型的字段比創(chuàng)建一個(gè)完整的新對(duì)象要容易得多” , 然后需要另一個(gè)字段,并以同樣的方式添加,慢慢的類變的越來越大,還有一另外一種情況大多數(shù)程序員就沒想過用對(duì)象的形式來表達(dá),而是以大量的基本類型,用過程式的思維來描述實(shí)現(xiàn)業(yè)務(wù)代碼.

導(dǎo)致的健康問題

如果基本類型變得越來越多,可能會(huì)出現(xiàn)對(duì)數(shù)據(jù)的操作在分散在多個(gè)地方,相應(yīng)的沒有組織的代碼可維護(hù)性也會(huì)變差,當(dāng)然也會(huì)引如很多諸如過大的類,過長(zhǎng)的參數(shù),重復(fù)代碼等更多的壞味道.

治療

重構(gòu)中
  • 如果想要替換的數(shù)據(jù)值是類型碼,而它不影響行為
    嘗試運(yùn)用 Replace Type Code with Class 將它換掉.

  • 如果你有與類型碼相關(guān)的條件表達(dá)式
    嘗試運(yùn)用 Replace Type Code with SubClass 或者 Replace Type Code with state/Strategy加以處理
    參考Switch驚悚現(xiàn)身章節(jié)視頻內(nèi)容

  • 如果你有一組總是被放在一起的字段
    嘗試運(yùn)用 Extract Class 把這些本該在一起的字段安置一個(gè)新家

  • 如果在參數(shù)列中看到基本數(shù)據(jù)類型
    嘗試運(yùn)用 Introduce Parameter Object 把它們變成參數(shù)對(duì)象

  • 如果你發(fā)現(xiàn)自己正從數(shù)組中挑選數(shù)據(jù)
    嘗試運(yùn)用 Replace Array with Object 把這些晦澀難懂的數(shù)據(jù)結(jié)構(gòu)變成可讀性很高的對(duì)象

  • 如果你發(fā)現(xiàn)很多單獨(dú)存在數(shù)據(jù)值
    嘗試運(yùn)用 Replace Data Value with Object 進(jìn)入炙手可熱的對(duì)象世界吧
    IntelliJ IDEA 練習(xí)視頻

康復(fù)

我們把那些原始類型(積木塊)變成了一個(gè)真實(shí)存在的概念(對(duì)象),使代碼變得更加靈活了。 對(duì)特定數(shù)據(jù)的操作是在同一個(gè)地方,而不是分散的。更容易找到重復(fù)的代碼。


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

相關(guān)閱讀更多精彩內(nèi)容

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