剛剛學習android,拿來osc的客戶端研究了一下,好的地方不少,就不說了,下面說說我以爲須要改進的地方。 android
一、裏面的if else至關的多,尤爲是在Main裏面,看的人都暈了,之後的功能愈來愈多,不停的加if else 絕對會形成代碼的維護成本劇增。 框架
二、沒有按模塊劃分包,不少直接放到一個地方,沒有抽出通用的組件。例如ui包裏,不利於代碼的重用,舉個例子,如今客戶端能夠做爲osc的客戶端,當我須要把它改形成osc2的客戶端呢,就成本比較高了,代碼粘連的很厲害,處理很不方便。 佈局
三、一個功能的代碼過於分散,有的在AppContext中,有的在ApiClient中,並且關於這兩個類個人理解是應該是全局的,裏面沒有各模塊個性化的代碼比較好,這樣比較好重用代碼的框架結構,可是實際上裏面卻包含了不少各個功能模塊的方法。 學習
四、一個類的代碼行數太大,Main中就超過兩千,實在累。 ui
如今說說個人我的觀點,只供參考,後面附我重構後的代碼,裏面只有新聞資訊模塊,可是基本上的結構定了,同時公用組件抽出了一些,見笑了,只是弄了幾天,不足之處望你們見諒。 .net
一、使用類的多態解決if else 的問題。 設計
二、各個模塊分包處理,公用的代碼放在公用的包裏。 get
三、我將分散到各個類裏面的方法抽出來集中放在模塊中的各個類中,便於管理,同時也提升公用代碼的通用性。 源碼
四、採用抽出來新的類的辦法,將main中的各個模塊的方法放到各個模塊的單獨類中,這樣main方法的行數急劇降低,我只改造了一個模塊,其餘的沒有改造的我都先刪掉,這樣main的行數變成了350行(包括空行),按照這種改造方法,就算加上所有的osc的改造後的模塊,main類也不會超過600行,超過了說明須要重構。 博客
改造後的uml類圖以下(裏面以後一個新聞的實現,叫NewsMain)
下面對android客戶端的結構分析一下,
osc的客戶端界面以下:
能夠把上面的圖分紅三個部分,起名爲 head 和 frame 和 foot 。
head部分如圖
頭部信息固然是能夠被foot和frame部分調用修改的,因此有了uml中的BaseHeader
frame部分如圖
關於osc中的frame的實現,使用了很是多的layout定義,其實我看了一下,不少都是有共同之處的,徹底能夠抽出來一個通用的佈局,來實現動態的建立,同時也減小了文件數量,關於這個改造我尚未進行,由於時間的緣由。
foot部分以下圖:
因爲我想foot部分可能不止這些,因此我想要是能夠動態建立的,因此我設計了UML中的RadioFoot,由於是RadioButton實現的因此起名爲這個,固然能夠參考這個實現,實現其餘類型的。
關於實現代碼就不貼了,又長又很差看,提供工程的源碼下載,有興趣的能夠下載看看,也但願@紅薯能看看,呵呵
發現博客中不能插附件,我上傳到csdn中,你們下載吧http://download.csdn.net/detail/zyq_1/5628231
晚了,睡覺