又一次的版本更新上架,心情容不得片刻舒缓,新的迭代任务又明白的摆在桌面上。今年上半年自己琢磨完ReactiveCocoa
之后,对手上了项目做了MVVM
架构的尝试,当时自我感觉效果还不错,代码之间的关系确实变得清楚了,并且有更加多的机会去进行单元测试,但是在新的一年,回头再去思考自己当时的架构,依旧会发现很多的问题,例如虽然逻辑清晰,但是并没有完全解耦,一些界面任务的处理,依旧通过RAC
返回到View
层去处理。只是Controller
更干净了,心里自己觉得舒服罢了。
之后又经手了现在这个项目,在最近不断的工作不断的熟悉业务代码的同时,近日来对于架构方面的思考也不少。这个项目模块之间功能清晰,业务A和业务B之间耦合较少,但是在未来的日子里,公司又有可能新启动项目,不出意外会使用到跟当前项目相同的模块,而如何能节约时间,亦或是在当前项目上调优架构,是我最近思考的主题。
在了解体会了项目中越来越多的缺点之后,我的脑子里首先蹦出来的就是模块化开发这个概念,这个概念在脑子里成形之后,我阅读了大量的他人组件化开发的源码,从阿里大神刘坤的博客里再到蘑菇街的组件化之路,大家再做iOS
组件化开发时,似乎都或多或少的受到了路由这个概念的影响,这个概念是在各个模块之间,或者每个页面之间都用url
来进行跳转,具体的话可以去查看JLRoute
这个框架,是一个把URL
跳转使用的非常好的一个框架,很理想。
但是我认为URL
的路由概念虽好,但是在App启动时需要实例化各组件的模块,说白了就是有个类似注册各个模块的行为,而在组件化的过程中,注册URL
并不是充分必要条件,会造成不必要的内存常驻,如果是注册Class
,内存常驻会小一点,如果是注册实例,组件多了,常驻的内存也就更大了。
上述是第一点原因,其二,我认为当前团队,当开发人员去切换到路由模式,学习成本过大,我并不像在之前的公司,在软件团队里是一个决策者,当前我只是一个普通的程序员,改良架构这种事情的推动力度不够大,所以暂时先抛开组件化开发的这个想法。
其三,目前项目的时机未到,当前的项目还没有到相对完善的时候,迭代的压力也比较大,就目前的项目状况来看,似乎常规的开发模式还是可以沿用一段时间的,毕竟组件化开发的成效在小团队模式单项目的模式下不会体现的特别明显,反而团队越大,组件开发的必要性越强。并且当前团队在用Swift
开发项目,如果希望最优的模块化开发,还是需要依赖到OC的runtime
的。
至于如何进行组件化开发,我这里也就不赘述了,网上优秀的团队博客说了很多,比如阿里念纪、微信阅读、蘑菇街、casatwy等等。每一个都对组件化有独到的见解,而我现在能谈得所有见解,只不过是站在这些巨人的肩膀上汲取到的一点皮毛,真正的感想,还需等实践之后再来谈。
最近就打算写个小模块,把这个模块完全封装成一个组件,植入到App中。
对于缓存和数据持久化,我也想到了一个似乎可以更好处理,更干净的方案,等到测试完成,再写个文章单独讲述吧。