谈一下自己对App的整体框架的看法,感觉就是建立一套规范,让我们的开发思路更清晰明了,写代码更高效,代码更易于拓展和维护;我感觉一般就是考虑项目架构、功能模块、需要用到的技术、框架、需要用到的界面控件、数据的存储和需要的一些工具类和测试工具;
了解APP的功能
设计App的整体框架,首先要清楚我们要做的是什么,清楚需要做哪些功能和一些细节,这样才能保证我们之后的设计和决定是正确的;
项目架构
常见的架构有MVC、MVP、MVVM,项目的架构一般是根据项目的大小和功能来决定的。项目比较小,功能比较简单,也不准备后期继续迭代开发,选择MVC简单点快速完成开发就可以了;稍微复杂点,大一点的项目可能就需要MVP或者MVVM来开发,界面和数据分离,保证代码是清晰干净的,易于维护;要是项目的业务比较复杂,业务变化较为频繁,可能选择MVP-clean,每个业务单独写一个用例,保证代码可复用性、灵活性;要是界面数据是经常刷新变化的,使用MVVM自动刷新也挺好;要是项目很大,那可能使用组件化开发比较好...其实也取决于其他开发成员对架构的理解和使用情况
开源框架
网络请求
根据项目的功能来选择一些框架,比如接口多是使用HTTP的话,选用Retrofit
或者其他网络框架,即时通讯可能使用Mina
或者其他socket框架;
接口设计和加密
会考虑一下接口如何设计,制定一个统一的协议;同时数据的加密也是需要考虑,使用什么的方法加解密
图片加载
网络图片加载比较多可能选择一下Glide、Picasso、Fresco等图片加载框架,有动态图片可能选择Glide、android-gif-drawable
数据库
数据存储,数据少可能使用OrmLite这种简单易用的就行,数据多了考虑速度快的框架比如Realm;
热门框架
是否使用比较热门的技术来编写代码,比如rxjava、eventbus、Dagger2、Kotlin
界面布局
主要是项目里面有没有什么特殊的控件,有没有使用什么动画,或者material design,可能一些界面还需要用到网页
技术难点
先看一下需要用到哪些技术,能实现的,规划一下怎么去实现;没法实现的比如地图、支付什么的,考虑使用什么三方SDK;
功能模块
根据业务划分一下功能模块
测试和优化
使用一些测试的工具来帮助开发,比如内存泄漏检测LeakCanary、界面卡顿检测BlockCanary;运行时出错如何收集错误;如何检测发生了ANR;还有统计用户爱好习惯什么的;就是如何完善APP
框架搭建
新建项目,先分一下层,集成一些基础类,集成一些工具类;
代码规范
代码规范什么的就不用讲了,其实每个项目都一样;
结语
这些都是自己的一些看法,肯定还有一些没有考虑到的地方,会不断的更新;有时间也会不断的完善每一步具体的内容