浅谈项目架构重构之路——概述

忙了一个多月,一直没时间写文章。终于把项目重构完了,借此机会浅谈一下对Android架构的见解。笔者将会把重构分为三个部分讲解。本文为概述篇,主要提及一些前提和想法。

[笔者仍为Android初学者。如有解释错误的地方,欢迎评论区指正探讨]


为什么需要重构

笔者接手的这个项目已经有三年多的历史,项目架构也从第一代一直延续至今,可想而知,随着业务需求的迭代,项目也暴露了很多问题。由于业务繁杂,代码结构混乱、层次不清,各业务技术方案不统一,冗余代码充斥项目的各个角落。

早期架构

项目诞生之时,由于业务量不多,采取也是最清晰的分层式结构,如图:

早期架构

嘿嘿,这种分层结构很常见吧?确实对于早期项目而言,业务量不多,这样的结构十分清晰,各个层次各司其职,不过随着业务的增长,单是一个activity包里就有三十四十个,想想都头皮发麻,这对于项目的拓展,维护,交接都十分困难,往往每次找一个activity对应的fragmentadapter都要找半天。
在接手之后这个项目后虽然我们也整理一下原先的分包结构,看上去比原来优雅一些:
微调之后的架构

可以看到,将原来全部挤在一起的各个类都重新按模块划分开,各个模块内部依旧保持原来的分层结构。其实这样还是指标不治本,潜在的问题依旧存在。

存在的问题

  1. 代码量大,没有严格按照规范,各有各的风格,不利于交接
  2. 模块边界定义不清,耦合问题严重
  3. Activity和Fragment同时承担了Controller和View的职责,导致他们变得极其臃肿且难以维护
  4. 部分模块过分使用继承,导致拓展性极差
  5. Common通用模块类膨胀
  6. 部门模块因为赶工,使用大量接口回调,内存泄漏严重
  7. 业务代码与通用代码混合,修改一处代码可能会牵一发而动其身
  8. 第三方依赖添加时没有严格审核,存在重复功能的依赖
  9. 业务组件无法实现复用,单独编译

思考

为了解决上述的问题,笔者参考了许多资料,网上对于目前安卓架构这方面的文章层出不穷,从早年提及的MVC,到最近火热的MVPMVVM,还有一些黑科技,插件化,组件化,模块化等等。
也参考了一些大公司提出的方案:
携程插件化架构
手淘插件化架构
饿了么WebApp架构
微信模块化架构
安居客MVP架构
android-architecture
由于笔者负责的这个项目,在业务需求上与微信相似,核心业务固定,业务一旦成型,变动不大,首页也不像手淘一样多变,所以类似插件化,热修复,WebApp这样的黑科技并不适用,强行引入只会增加开发难度,难以维护。
在综合考虑对于目前项目的业务需求,未来的拓展性,衡量重构所花费的时间与收获价值后,笔者指定了如下方案。

解决方案

在笔者指定方案的时候,还有个小插曲,导师提出打算做影子App的需求,希望能做到提取项目中部分模块快速集成一个新的app,这样的需求对于当时的App根本不可能实现,这也更促使笔者确定重构刻不容缓。
整个方案分为三部分:

  • 全局架构——模块化
  • 局部架构——mvp+组件化
  • 整理第三方库

先放几张图,看一下重构前后的变化:


全局架构变化.png

局部架构变化.png

系统架构设计.png

由于做图时软件出了问题,图片里部分文字会出现错位。将就着看看哈。

对于这三部分,笔者准备以三篇文章来叙述:
模块化
mvp+组件化架构
[第三方库的选择]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260