NO IMAGE

程式碼重構的根本思想是模組化、靈活性、高內聚、低耦合。

示例程式碼可以看看我的github上的一個簡單的demo:https://github.com/bailiangjin/BaseLibrary

Android 專案程式碼重構:

將與業務邏輯無關的公共基本資源、工具類等等抽取到一個lib 工程中,主程式中只放與業務邏輯相關的程式碼和工具類:

1、將公共資源類進行抽取,包括:

string.xml

color.xml

styel.xml 

drable  中自定義的shap 、selector、anim 

這些資源基本是和程式業務邏輯無關的,將其放到主工程中只會增加程式碼量影響對程式業務邏輯的理解。

工程專案所特有的資源可以採取繼承於lib庫工程中資源,對特有部分進行覆蓋,例如lib工程style 中定義基礎 的button 形狀 包括預設大小、預設背景、文字大小等,主工程中定義特有style 時現繼承於lib工程中style 再根據實際需求覆蓋其中的元素如文字顏色、背景顏色等。定義好後,工程中再統一以此作為base style 直接引用 或者 再進行深一層細化定製。

抽取過程中 如果發現是比較有益的 可以公用的東西儘量往上一層抽取 ,只要是與工程無關的儘量抽取到lib 工程中,開發過程前期可能耗費更多精力,但當一個專案下來,你除了收穫專案相關的經驗外,還擁有了一個與專案無關的、強大的基本資源庫,進行新專案開發時,你可以基於一個已經不斷優化過的基礎資源庫進行開發,很多低層次程式碼、工作不再需要重複性勞動。

ps:個人對UI設計的一點見解:

在精力允許的情況下,能自己xml實現的效果儘量不要使用美工切圖。比如按鈕、漸變背景、純色背景等等、都可以自己去畫。

使用切圖嚴重依賴美工的個人素質和切圖質量 且會增大應用的體積,在後期更改程式風格配色時需要替換切圖調整,而假如以上資源使用自己定義的背景xml 資源 只需更改顏色欄位即可調整應用配色、風格。

如果讓我自己做一個應用,我最理想的效果就是 程式資源中只有一張圖,那就是桌面圖示,當然只是理想狀態、一般的應用 還是有一些特殊的圖示或者難以實現的效果需要使用切圖。

但作為開發人員,我感覺應儘量減少對美工、對切圖的依賴。

我喜歡的一個理念:

No design is the best design。

2、將與程式邏輯無關的工具類進行抽取:

比圖 BitmapUtils、Toast工具類、log工具類、時間工具類等等,總之,遵循一個Top原則:與程式業務邏輯無關的工具類,都抽取到lib工程中。

一個專案做完的時候,你收穫的不止有業務處理經驗,還有一個強大的工具類庫。你的程式設計經驗、理念的提升可以使你在做一個新專案時從架構上更合理,而工具類的抽取可以使你再開啟一個新專案時不必再重複那些低端的重複勞動,基本類庫你都有、你需要關注的只是這個程式的業務邏輯、只需關注程式的業務與上一個有什麼不同。

總之,專案重構完之後,理想的狀態是:

專案主工程中,所放的資源、工具類是繼承於基礎lib工程,但只與該專案相關的,所有與程式業務邏輯程式介面風格等無關的基礎資源和工具類都在Lib工程中。減少重複性勞動、減少對美工切圖的依賴、將基礎資源真正抽取出來,主工程只關注業務邏輯。

未完待續。。。。。