redux实践体会

最近在项目里实践了一把redux框架,有些感受记录一下。

框架的实现使用这个库Reductor: Redux for Android,

之前各种说java不适合用redux,但是亲自上手后,感觉这个库已经把大部分问题都解决了。

下面说重点

以数据为核心的开发思路

之前的开发方式,很大程度上我们专注于业务流程的实现,

一个功能的实现,我们会考虑功能中包含的业务逻辑,业务流程,

思考的方式是界面上有什么东西,点击按钮会触发什么逻辑,然后走什么流程,最后提交服务器,返回之后,又怎么刷新界面。

当我们想象应用运行时,其实看的是应用包含的流程,复杂的应用就会产生不同流程的耦合,逻辑越来越复杂

而使用redux,我们需要专注于如何设计数据,用以表达应用。

一个功能,首先要思考它有哪些数据,用最小的数据,表达它的所有状态,

然后思考什么样的操作或者业务流程会产生什么样的数据变化,

最后思考什么样的数据产生什么样的界面。

当我们想象应用运行时,我们看到的是应用的数据,是静态的,不管多复杂的业务逻辑,都转化为对数据的改变。

redux开发的合适顺序

  1. 设计store,用最少的数据集完整的表达应用

  2. 设计action,理清楚应用都有哪些产生数据变化的事件

  3. 设计reducer,实现在不同action下,数据如何变化

  4. 实现view,根据数据展示view,根据view的操作和业务流程发送action

其它一些细节

  1. 数据应该使用不变量,集合可以使用pcollection,其他数据结构可以使用kotlin的 data class,或者google的AutoValue(我用的kotlin)

  2. json直接转不变量目前没有方案

  3. action应该设计的尽量业务含义清晰,因为数据的变化是由于action带来的,如果action的业务含义不清晰,就很难理解应用到底发生了什么

  4. 像loading状态这种view的状态,不要放到store里,应该在流程中用回调的方式控制

  5. 注意action发送、reducer处理、数据变化监听都是在一个线程里,一般都在主线程,所以发送action的时候都要在主线程

  6. 通过Middleware可以实现异步action,从而达到业务逻辑和view解耦

你可能感兴趣的:(redux实践体会)