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)解決大部分問題敛劝。