持續(xù)重構(gòu)

在這一年的開發(fā)過程中役衡,從什么都沒有到現(xiàn)在的穩(wěn)定迭代段化,其中經(jīng)歷了多次的重構(gòu)工作嘁捷,這里來聊聊其中的一些看法。

我們的模塊显熏,從開始的剛好能夠滿足需求雄嚣,到后面能夠勝任各種要求,再到最后喘蟆,簡單的調(diào)用就可以完美的勝任工作缓升。這是持續(xù)根據(jù)實際情況思考,經(jīng)過多次重構(gòu)而得到的結(jié)果蕴轨。

為什么要重構(gòu)

從出發(fā)點(diǎn)來看:

  • 功能缺陷港谊,已經(jīng)很難修復(fù)或者修復(fù)導(dǎo)致代碼更加混亂,希望通過重構(gòu)能夠徹底的解決問題
  • 功能越來越復(fù)雜橙弱,代碼越來越多歧寺,導(dǎo)致維護(hù)成本非常大

從最終點(diǎn)來看:

  • 統(tǒng)一結(jié)構(gòu),將類似的東西統(tǒng)一膘螟,模塊化成福,避免重復(fù)代碼和相同的bug
  • 細(xì)分功能碾局,將一個復(fù)雜的功能細(xì)分荆残,減少開發(fā)的復(fù)雜度,增加復(fù)用性
  • 最終的目的都是為了使用者更加簡單可靠

最佳時機(jī)

這里我把重構(gòu)最適合的時機(jī)概括為兩種:

  • 功能爆炸期净当,當(dāng)功能復(fù)雜化内斯,代碼單純的大量疊加時蕴潦,必然形成很多復(fù)雜邏輯,并且冗余的代碼
  • 類爆炸期俘闯,當(dāng)類似的功能經(jīng)過一定的歸類潭苞,導(dǎo)致每種類型的子類型隨著項目進(jìn)行而急劇增加的時候

以我們的項目經(jīng)驗來看,在前幾期的時候真朗,由于時間緊張此疹,功能的大量累加,導(dǎo)致一個復(fù)雜點(diǎn)的頁面就有上千行的代碼遮婶,此時每次改動都會花費(fèi)大量時間蝗碎,而且有部分bug不能從根本上解決。這時候我們開始了第一次的大規(guī)模重構(gòu)旗扑,主要包含以下幾點(diǎn):

  • 提出組件化框架蹦骑,拆分頁面代碼,并把之前的一些功能用組件化改寫
  • 統(tǒng)一相似組件臀防,把視覺相似的組件進(jìn)行統(tǒng)一化眠菇,并且對代碼結(jié)構(gòu)進(jìn)行重新歸類
  • 歸納部分相似功能,比如導(dǎo)航欄袱衷、頁面頭部的交互變化捎废,網(wǎng)絡(luò)層重新整理

經(jīng)過這次的整理拆分后,已經(jīng)是一個比較同一的整體了致燥,能夠很好的復(fù)用和修改缕坎。

但是經(jīng)過部多個版本之后,又出現(xiàn)了新的問題篡悟。每次對頁面和功能的特例化谜叹,導(dǎo)致相同資源的組件或者功能越來越多,導(dǎo)致每次使用的時候都不太清楚用哪個組件比較好搬葬。而且每個組件的接口也有略微的差異荷腊,并不能無縫的切換。以及一些原來就存在的急凰,還沒有經(jīng)過拆分的功能女仰。

這次主要做的主要是統(tǒng)一化工作,比如最簡單的點(diǎn)贊按鈕抡锈,在很多地方使用疾忍,同時因為歷史原因,很多圖標(biāo)并不是同一個資源床三,邏輯規(guī)則也并不統(tǒng)一一罩,接口也不統(tǒng)一。經(jīng)過對整個項目的觀察撇簿,發(fā)現(xiàn)其實目前項目中點(diǎn)贊按鈕只有大小兩種樣式聂渊,那么使用抽象工廠的方式進(jìn)行歸納差购,對外暴露的只有一個類型,那么這樣使用者就不需要知道其中具體有幾個組件了汉嗽。

public class PraiseButton {
+ (instanceType)buttonWithStyle:style;
}

private class _SmallPraiseButton: PraiseButton;
private class _BigPraiseButton: PraiseButton;

而其他組件和功能對同一個資源的描述目前也是比較分散欲逃,今后也會按照這樣的方式,按照資源類型進(jìn)行歸類與統(tǒng)一饼暑。

重構(gòu)目的

目前來說兩次重構(gòu)的目的是:

  1. 第一次

拆分功能稳析,讓每個模塊盡可能的簡單,可復(fù)用弓叛;減少復(fù)雜度迈着,減少隱藏的bug;能夠給團(tuán)隊其他成員使用邪码。

  1. 第二次

合并和歸納功能裕菠;統(tǒng)一合并相同資源、功能的接口闭专;減少對外暴露的實現(xiàn)細(xì)節(jié)奴潘;讓使用者面對的只有一個對象,使用更加簡單影钉;減少理解溝通成本画髓。

猶如讀書時候老師說的一件事,剛開始讀書的時候平委,書是薄的奈虾;讀的久了,書就變厚了廉赔;當(dāng)你已經(jīng)精通書中所有肉微,書又變薄了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蜡塌,一起剝皮案震驚了整個濱河市碉纳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馏艾,老刑警劉巖劳曹,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異琅摩,居然都是意外死亡铁孵,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進(jìn)店門房资,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜕劝,“玉大人,你說我怎么就攤上這事志膀∥跤睿” “怎么了鳖擒?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵溉浙,是天一觀的道長烫止。 經(jīng)常有香客問我,道長戳稽,這世上最難降的妖魔是什么馆蠕? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮惊奇,結(jié)果婚禮上互躬,老公的妹妹穿的比我還像新娘。我一直安慰自己颂郎,他們只是感情好吼渡,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乓序,像睡著了一般寺酪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上替劈,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天寄雀,我揣著相機(jī)與錄音,去河邊找鬼陨献。 笑死盒犹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的眨业。 我是一名探鬼主播急膀,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼龄捡!你這毒婦竟也來了脖阵?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤墅茉,失蹤者是張志新(化名)和其女友劉穎命黔,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體就斤,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悍募,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了洋机。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片坠宴。...
    茶點(diǎn)故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖绷旗,靈堂內(nèi)的尸體忽然破棺而出喜鼓,到底是詐尸還是另有隱情副砍,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布庄岖,位于F島的核電站豁翎,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏隅忿。R本人自食惡果不足惜心剥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望背桐。 院中可真熱鬧优烧,春花似錦、人聲如沸链峭。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽弊仪。三九已至熙卡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間撼短,已是汗流浹背再膳。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留曲横,地道東北人喂柒。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像禾嫉,于是被迫代替她去往敵國和親灾杰。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,334評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫熙参、插件艳吠、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,124評論 4 61
  • 中秋月圓夜, 滿庭桂花香孽椰。 舉杯同歡慶昭娩, 歌舞夜未央。 注1:兒子女兒都回到老家衡東黍匾,昨晚全家舉杯同慶栏渺,其樂融融,...
    亮靚_27d5閱讀 434評論 34 49
  • 在去年的春天 一場綿綿的春雨把你澆灌 你偷偷的鉆出了地面 嫩嫩的 綠綠的 你是春的代言 陽光下多么的燦爛 藍(lán)天白云...
    滄海桑田_bc60閱讀 361評論 0 1
  • 軍師,是負(fù)責(zé)監(jiān)察軍務(wù)莱褒,參謀軍事的官員击困,一般作為統(tǒng)帥的副手,負(fù)責(zé)出謀劃策保礼。 我們所熟悉的三國軍師沛励,劉備方面有諸葛亮责语,...
    指南偵閱讀 4,142評論 0 3