由于年后换了工作,以及个人的原因,各种事情累加在一起,造成每天各种忙碌也就没有时间写文。年后新入职的项目正处于开发阶段,所以早期组内的小伙伴们也都是积极的进行讨论。争取在最开始的时候我们可以给项目打下好的根基,以便于之后的开发和维护。所以在这里分享下我们在重构中的一些收获和方案。
在我入职之前,新的项目组内的四个小伙伴已经完成了相当的一部分基础件的工作。我入职的第二周开始着手界面搭建相关的工作。这个时候组内的小伙伴们开始抱怨代码冗余的问题,场景大致如下,我们的项目中有A,B模块,都可以进行评论点赞等多个操作。而且A,B模块会在多个界面中以 feed 流进展示。然而由于各种原因,在不同 feed 流界面上A,B模块对应的 model 可能会有所不同,而且每次写A,B模块我们之前都将A,B模块的 event 回调到了 controller 层进行处理,也就造成了同伴抱怨,每次写界面都需要拷贝一大堆的相似的业务逻辑。这时我们就开始了这次重构之旅。
首先我们需要解决如下问题:
1.view 和 model 层的解耦,让 view 与 model 相互独立。(同事当时的做法是生成 viewModel ,其实当时的方案耦合性主要在 viewModel 层中,可能发生大的改变就需要 copy 一次 viewModel)
2.事件的统一处理,也就是说不需要在每一个界面需要进行事件的处理。
3.事件的跨层传递。比如 A cell 上按钮点击 B cell 做出响应并改变。
对于第一个问题,由于我们用的 YYModel 来做的模型转换,所以对于一个字段的多种返回值的问题,我们当时的想法是用 YYModel 的 mapper 方案来实现服务器多种返回值对应一个属性的问题。所以看起来 viewModel 层好像 YYModel 就完全解决了问题。可是根据产品文档我们会发现,事情远没有想象的简单,
来源: https://juejin.im/post/5a3140705188257db3728111