从零开始开发一款Android app,前期需要哪些规划工作避免代码臃肿混乱?

相当于一个超轻量级的框架的实现
已邀请:
避免代码臃肿混乱,最根本的是需要代码功底以及对于程序的整体把控和设计能力。除此之外,对于Android App,个人抛砖引玉,提点自己的思路。如果只是轻量级的App或者Web App,在App内做点简单的层次划分就可以,App实际上只是做在服务器和UI之间的透传。但目前我手上项目App最终的代码量应该在10W行以上,本地需要进行复杂操作,那就需要在架构上进行一些思考。

1.整体架构
代码和文档规范,根据需求进行模块划分,确定交互方式,形成接口文档,这些较为通用的内容不再细说。做Android App时,我一般将App进行纵向和横向的划分。纵向的App由UI层,逻辑层和模型层构成,整体结构基于MVP思想(图片来自网络)。
UI层内部多用模板方法,以Activity为例一般有BaseActivity,提供包括一些基础样式,Dialog,ActionBar在内的内容,展现的Activity都会继承BaseActivity并实现预留的接口,Activity之间的继承不超过3次;为避免Activity内代码过多,将App的整体控制权后移,也借鉴了IOC做法,大量的逻辑操作放在逻辑层中,逻辑层和UI层通过接口或者Broadcast等实现通信,只传递结果。一般Activity里的代码量都很大,通过这两种方式一般我写的单个Activity内代码量不超过400行。
逻辑层实现的是绝大部分的逻辑操作,由UI层启动,在内部通过接口调用模型层的方法,在逻辑层内大量使用了代理。打个比方,UI层告诉逻辑层我需要做的事,逻辑层去找相应的人(模型层)去做,最后只告诉UI这件事做的结果。
模型层没什么好说的,这部分一般由大量的Package组成,代码量是三层中最大的,需要在内部进行分层。

横向的分割依据AOP面向切面的思想,主要是提取出共用方法作为一个单独的Util,这些Util会在App整体中穿插使用。现在我的App都会引入我自己封装的Jar包,封装了包括文件、JSON、SharedPreference等在内的常用操作,自己写的用起来顺手,也大幅度降低了重复作业。

这样纵,横两次对于App代码的分割已经能使得程序不会过多堆积在一个Java文件里,但靠一次开发过程就写出高质量的代码是很困难的,趁着项目的间歇期,对代码进行重构很有必要。

2.类库的使用
现在有很多帮助快速开发的类库,活用这些类库也是避免代码臃肿和混乱的好方法,下面给题主推荐几个常用类库。
减少Activity代码量的依赖注入框架ButterKnife:
https://github.com/JakeWharton/butterknife
简化对于SQlite操作的对象关系映射框架OrmLite:
https://github.com/j256/ormlite-android
图片缓存类库Android-Universal-Image-Loader:
https://github.com/nostra13/Android-Universal-Image-Loader
等等还有很多。但我对第三方类库的使用并不是非常多,对于这方面 @stormzhang 应该了解的比我多。我的态度是用能官方的还是用官方的,不行再用第三方,选择偏向于慎重,因为万一出问题呢?

个人博客:http://blog.csdn.net/luyi325xyz 欢迎与我交流。

要回复问题请先登录注册