關(guān)于APP的重構(gòu)

1. 概述


個(gè)人覺得竹习,在項(xiàng)目開發(fā)一開始,就需要考慮框架如何搭建列牺,使用MVC還是MVP還是其他的整陌、聯(lián)網(wǎng)請求、處理圖片、處理緩存等等這些問題泌辫,在開發(fā)前期随夸,這些東西都是一定要考慮進(jìn)去的,如果在開發(fā)后期震放,代碼質(zhì)量下降宾毒、難以閱讀、難以維護(hù)殿遂,導(dǎo)致迭代困難诈铛,造成惡性循環(huán),那么到最后可能會(huì)需要重構(gòu)代碼墨礁,那么接下來我們就從什么情況下需要重構(gòu)代碼幢竹、重構(gòu)的目的、如何去重構(gòu)這3個(gè)方面來進(jìn)行分析恩静。

2. 什么情況下需要重構(gòu)代碼焕毫?


2.1:結(jié)構(gòu)混亂

1>:代碼沒有層次之分,亂寫一通驶乾,沒有一條清晰的業(yè)務(wù)線邑飒;
2>:各個(gè)模塊之間代碼互相摻雜;
3>:代碼中的MVC轻掩、MVP幸乒、MVVM等多個(gè)框架存在;
4>:不太規(guī)范唇牧,各個(gè)模塊之間代碼可能不一樣罕扎;

2.2:可讀性差

1>:一個(gè)類的代碼太長,方法的代碼太長丐重;
2>:冗余代碼腔召、重復(fù)代碼太多;
3>:維護(hù)困難扮惦,牽一發(fā)而動(dòng)全身臀蛛,修改一個(gè)地方,改動(dòng)的地方太多崖蜜;
4>:版本迭代時(shí)浊仆,新添加一個(gè)或者幾個(gè)功能時(shí),需要修改原來的代碼豫领,而且修改大量的代碼抡柿;

3. 重構(gòu)的目的,為什么需要重構(gòu)等恐?


重構(gòu)的目的就是為了提高代碼的質(zhì)量洲劣,有以下幾點(diǎn):

3.1:可讀性高

1>:命名規(guī)范备蚓,見名知意;
2>:需要添加一定的注釋囱稽;
3>:每一個(gè)類的代碼不要太多郊尝,邏輯一定要明確,結(jié)構(gòu)一定要清晰战惊;
4>:把公用的代碼都盡量抽取成方法流昏,抽取成工具類,可以在其他地方使用样傍,目的就是盡量不要寫冗余横缔、重復(fù)的代碼;

3.2:可維護(hù)性

1>:對于文字衫哥、文字的顏色茎刚、文字的大小,即就是text撤逢、textSize膛锭、textColor,都盡量寫在string蚊荣、dimens初狰、color下邊,然后在Xml文件中直接引用即可互例,不要直接把具體的文字奢入、顏色、大小寫到Xml文件中媳叨;
2>:代碼盡可能的復(fù)用腥光、盡可能的復(fù)用、盡可能的復(fù)用糊秆;
3>:開發(fā)過程中所有的東西武福,能不寫死的都盡量不要寫死,防止以后需求痘番、數(shù)據(jù)捉片、接口、邏輯等地方發(fā)生變動(dòng)汞舱,有利于自己后期的修改伍纫;

4. 如何重構(gòu)?


4.1:選擇一個(gè)合適的架構(gòu)

1>:之前的開發(fā)應(yīng)該都是MVC昂芜,現(xiàn)在如果邏輯比較復(fù)雜翻斟,功能比較多的,可以使用MVP说铃。
M指的是model访惜,一般放javabean;
V指的是Activity债热、Fragment;
P指的是Presenter幼苛,一般都是把聯(lián)網(wǎng)請求等一些數(shù)據(jù)處理放在P中窒篱;

然后在V中實(shí)現(xiàn)P,然后創(chuàng)建一個(gè)P的對象畸冲,在需要獲取數(shù)據(jù)的地方就通過P的對象調(diào)用P中寫好的方法苫耸,來返回對應(yīng)數(shù)據(jù)就可以类少;
具體的可以參考 MVP - 自己在項(xiàng)目中的使用方式

4.2:技術(shù)的選定

1>:網(wǎng)絡(luò)請求架構(gòu)、緩存庫倘核、加載圖片泣侮;
2>:ListView、RecyclerView等紧唱;

4.3:從小到大的重構(gòu)

就是說不要一下子去大面積重構(gòu)活尊,逐個(gè)的每一個(gè)小的模塊重構(gòu)隶校,并且保證可以運(yùn)行;

5. 總結(jié)


其實(shí)就是一個(gè)原則:
1>:提取方法蛹锰,去除重復(fù)的代碼深胳;
2>:抽取工具類,多個(gè)地方使用铜犬;

一定要避免在多個(gè)地方存在重復(fù)的代碼舞终,一定不要出現(xiàn)類似這樣的問題,只要解決這個(gè)問題癣猾,其實(shí)就已經(jīng)解決大部分問題敛劝。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市纷宇,隨后出現(xiàn)的幾起案子夸盟,更是在濱河造成了極大的恐慌,老刑警劉巖呐粘,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件满俗,死亡現(xiàn)場離奇詭異,居然都是意外死亡作岖,警方通過查閱死者的電腦和手機(jī)唆垃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來痘儡,“玉大人辕万,你說我怎么就攤上這事〕辽荆” “怎么了渐尿?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長矾瑰。 經(jīng)常有香客問我砖茸,道長,這世上最難降的妖魔是什么殴穴? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任凉夯,我火速辦了婚禮,結(jié)果婚禮上采幌,老公的妹妹穿的比我還像新娘劲够。我一直安慰自己,他們只是感情好休傍,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布征绎。 她就那樣靜靜地躺著,像睡著了一般磨取。 火紅的嫁衣襯著肌膚如雪人柿。 梳的紋絲不亂的頭發(fā)上柴墩,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機(jī)與錄音凫岖,去河邊找鬼拐邪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛隘截,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播汹胃,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼婶芭,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了着饥?” 一聲冷哼從身側(cè)響起犀农,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎宰掉,沒想到半個(gè)月后呵哨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轨奄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年孟害,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挪拟。...
    茶點(diǎn)故事閱讀 39,727評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡挨务,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玉组,到底是詐尸還是另有隱情谎柄,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布惯雳,位于F島的核電站朝巫,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏石景。R本人自食惡果不足惜劈猿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鸵钝。 院中可真熱鬧糙臼,春花似錦、人聲如沸恩商。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽怠堪。三九已至揽乱,卻和暖如春名眉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凰棉。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工损拢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人撒犀。 一個(gè)月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓福压,卻偏偏與公主長得像郑藏,于是被迫代替她去往敵國和親入偷。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評論 2 354

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