1.引言
前面把代碼中函數(shù)的重構(gòu)記錄了下竟终,今天在記錄下在對(duì)象之間搬移特性。
2.正題
《重構(gòu)改善既有代碼的設(shè)計(jì)》中作者提到一句話,我非常認(rèn)同帘瞭。每段代碼只能在它應(yīng)該出現(xiàn)的位置。舉一個(gè)例子蒿讥。公司項(xiàng)目蝶念。Android中抛腕,一般Application類主要是初始化一些sdk,全局變量的媒殉。但是我接手那個(gè)項(xiàng)目Application類里面不僅僅有sp操作担敌。還要判斷是否能使用照相機(jī)等操作。這些明顯是不對(duì)的廷蓉。以mvc架構(gòu)開發(fā)app全封。activity里面往往會(huì)用到網(wǎng)絡(luò)請(qǐng)求。一般都會(huì)把網(wǎng)絡(luò)請(qǐng)求代碼放到activity中桃犬。其實(shí)這樣做也不合理刹悴。所以有些人會(huì)把請(qǐng)求網(wǎng)絡(luò)那塊專門放到network包名下。
2.1 Move Method(搬移函數(shù))
"Move"重構(gòu)手法會(huì)先將搬移的函數(shù)變成靜態(tài)攒暇,然后在“Move”才能轉(zhuǎn)移成功土匀。搬移函數(shù)的的確確要很注意函數(shù)內(nèi)部的變量問題。
具體操作:
2.2 Move Delegate(移入委托類)
移入之后形用,原類里面的函數(shù)沒有被刪除恒削,這個(gè)就是和上面的手法的區(qū)別。
2.3 Inline Class(將類內(nèi)聯(lián)化)
在idea或者android studio中沒得名字叫“Inline Class”的重構(gòu)手法尾序〉龇幔可是我們可以通過“Move”來實(shí)現(xiàn)。
操作的gif圖:
2.4 Pull Members Down/Up(提煉到父類)
這個(gè)要說下每币。平時(shí)在寫項(xiàng)目的時(shí)候携丁,肯定會(huì)在寫的過程中發(fā)現(xiàn)寫的方法,可以抽取出來放到父類中兰怠。
主要用到的就是這幾個(gè)方法梦鉴;搬移代碼塊的時(shí)候一定要注意代碼塊內(nèi)部的變量。
后面會(huì)說一些重新組織數(shù)據(jù)的手法揭保。我先看看吧