A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Android_Robot 中级黑马   /  2016-11-22 10:02  /  1665 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

新潮流新技术、新框架
获取完整资源加QQ:2025808243

架构规范
架构方式是选择MVP,MVC,MVVM ,Flux还是clean 架构?
,+dagger2?+rxjava?+Retrofit/okhtttp?+loader?+databinding?+contentProvider?
谷歌官方架构示例android-architecture,以及我之前github中整理的架构合集能给你答案。



开源库的选取以及封装。对开源库的选取,一般都需要选择比较稳定的版本,还有作者在维护的项目
,比如这里在github搜索image,出现的安卓中的图片加载库。除了考虑star,还要考虑作者对issue的解决,以及开发者的知名度等各方面。






选取之后,一定的封装是必要的。

架构提示
这里尽量写出自己想到的点。
抽象层面上:
  • 提高架构的拓展性是有必要的。
    以前的框架可能会出现功能不足的情况,但是因为这点是不可预见的,所以我们选择框架时一定要了解好框架本身的扩展性如何,或者对框架有较深的理解,能够自己扩展框架,
  • 提高架构的稳定性
  • 架构的文档也是必不可少的。
具体操作时:
  • activity和fragment里面都会有许多重复的操作以及操作步骤,所以我们都需要提供一个BaseActivity和BaseFragment,让所有的activity和fragment都继承这个基类。
    来看看我们BaseActivity中都提供了哪些操作:





  • 必要的注释真的会一定程度上的降低你的工作量,而不是提高。
    比如说我使用Rxjava做加载数据的操作。这里面的流程可能稍显复杂,但是能够step1, step2的写在上面,能够让别人看懂,自己维护也方便。





  • 数据提供统一的入口。
    无论是在mvp,mvc,还是mvvm中,提供一个统一的数据入口,都可以让代码变得更加易于维护。
    比如,我使用的DataManager,里面的http还是preference,还是eventpost ,还是database ,都在DataManger里面进行操作,我们只需要与DataManger打交道。





  • 多用组合, 少用继承
  • 提取方法, 去除重复代码。
    比如在我的架构中,我会吧imageloader单独的抽取出来作为一个widget,把对RecyclerView的封装单独抽取出来,把下拉刷新上拉加载抽取出来。如下图:






    对于必要的工具类抽取也很重要,这在以后的项目中是可以重用的。




  • 不要使用魔鬼数字/字符串/尺寸值/颜色值,正确的命名等
    比如日间模式和夜间模式的对应颜色值,一看就很清晰了。





  • 引入Dagger2 减少模块之间的耦合性
    Dagger2 是一个依赖注入框架,使用代码自动生成创建依赖关系需要的代码。减少很多模板化的代码,更易于测试,降低耦合,创建可复用可互换的模块。


  • 为你的项目引入Rxjava+RxAndroid这些响应式编程吧。极大的减少逻辑代码,让你爱上写代码停不下来。
  • 通过引入 Event Bus(事件总线,这个项目使用的是otto)。它允许我们在Data Layer中发送事件,以便View Layer中的多个组件都能够订阅到这些事件。比如DataManager
    中的退出登录方法可以发送一个事件,订阅这个事件的多个Activity在接收到该事件后就能够更改它们的UI视图,从而显示一个登出状态。
    当然你也可以有很多的选择,EventBus,Otto,自定义RxBus等。减少回调。

  • 添加日志打印,用于查找错误等。
    logger 以及timber推荐。
    需要使用BuildConfig.DEBUG标记对Log进行封装,只在调试时输出重要信息,正式版不输出

  • TODO  more



文/CameloeAnthony(简书作者)
原文链接:http://www.jianshu.com/p/99239b9c1630
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马