2017年终总结
2017年已经过完,终于有时间写下总结,一直想写,却一直不知从何处下手。在2018年的第一天为整个去年画上一个句号吧。
# 工作方面
过完春节,开始积极面试,整个春节都是待业状态,并没有什么心情去旅行。以前计划的再好,待业的时候取西藏,去东北,结果真到待业的时候,是并没有什么心情出去的,而且压力也会变大。
经过一段时间的面试,最终选择了拍拍贷。拍拍贷有好几个产品线,总的来说分为理财和借款,主要是借款的产品线比较多,针对不同层次的人群会有些细分,也有现金贷业务。每个产品线都有独立的App,甚至借款还有给第三方接入的SDK。理财App为2014年开始开发,从WebView到Native,然后就一直持续开发到现在,随着版本的迭代,文件、代码越来越多,全部拥挤在一起。而借款等其他App的开始均是将理财App复制了一份,在此基础上进行开发。每个App的迭代速度基本上为每个月一个版本,持续不断的业务迭代,开发人员也不多,没有精力进行模块解耦,代码优化。以上为接触到的现状。
根据以往的经验结合一线公司App的主流开发方式,我们最终选择组件化开发。
# 组件化进程
我们首先拿理财App进行组件化改造,改变原有的开发方式。所有模块均为一个个独立的组件,结合CocoaPods进行依赖管理,而每个组件也使用CocoaPods进行创建开发,最终实现组件独立开发、独立测试、独立发布,而主工程形成空壳,称之为壳工程。
要想到达以上目的,需要对现有代码进行拆分。首先将App按照业务功能和非业务功能性进行粗暴的划分。
- 非业务功能按照功能职责创建出基础组件,比如:网络、路由、Utils,JSBridge,加解密等,这些为基础组件,可以被上层业务组件进行依赖。
- 对于业务功能又可以再次细分,分为通用业务功能和非通用业务功能。之所以如此划分,是因为一些业务共在公司所有App直接都是可以通用的,比如推送、Passport、SSL安全证书下发等。而非通用业务功能就为App特有的业务,比如散标、债券转让、个人中心等等。
在理论上是可以这么拆分,但在实际执行上并没有那么简单,因为要达到组件的独立开发,独立发布,需要对所有功能进行解耦。主要分两个方面进行:
- 页面解耦,传统A页面跳转到B页面的做法为在A中创建B的实例,然后进行跳转,这样A页面就会对B页面形成引用关系,如果A和B属于不同的业务组件,那组件之间就形成了依赖关系。解决这种页面跳转的耦合,我们选择是用了路由:PPDBLRouter,首先页面使用URI的方式注册路由地址、对象以及属性映射关系。其次,可以通过路由打开页面或者获取页面对象。
- 功能解耦,比如组件A中使用到组件B中的一个类里的一个方法,若直接调用便形成了依赖。我们选择使用阿里开源的BeeHive,组件将对外提供的功能注册为Service,且全部以Protocol的方式放入到通用的PPDBIZProtocol组件中,其他组件依赖此通用业务组件。具体方法可以参考BeeHive的Demo。
就目前App开发,多多少少都会有H5页面,像电商类的会更多,这就产生H5和Native交互的问题。我们在WebViewJavaScriptBridge的基础上又进行了优化和改造创建了自己的PPDBLWebViewJSBridge,将Handler的注册方式进行优化,使用注解的方式来注册Handler和JS调用方法,并进行统一管理。目前只提供了H5和Native的交互通道,后续可以参照腾讯的开源项目VasSonic进行加载优化。
# 执行
以上为简单理论上的组件化进程描述,而实际执行过程中遇到了各种各样的阻力、困难和坑。
- 组件化的理解,我们为什么要做组件化,团队中很多人可能会不理解,我们目前也能够满足业务需求,也能够进行正常的版本迭代,为什么要做组件化?其实做对于做前端的人员来说这个东西并不陌生,比如使用React、Vue开发,都是组件化的开发方式。而对于后端的人员来说,也是微服务,而对于移动端的人员呢?前期当然可以粗暴一个Project开发所有功能,而随着迭代越多,功能越多,我们也需要将各个功能分离,形成组件。
- 开发方式的转变,移动端不像前端和后端都有框架,前端又React、Vue,后端有Spring Cloud、Dubbo。而我们移动端只有依赖管理工具而已。我们只能借助依赖管理工具进行组件话开发以及组件依赖,iOS使用CocoaPods,Android使用Maven。开发方式的转变,现有的开发人员肯定会有转变过程以及阻力,需要反复沟通和讲解。
# 平台化
组件化之后,需要对组件进行管理、App管理、持续集成、内测发布等。将前期的脚本、插件、代码检查等放到服务端去执行,更加规范App的管理、组件的管理以及发布等。目前已经在稳步开发中。
# 健身生活
办了三年的健身卡,立志将自己的一身肉减掉,三个月从72kg减到65kg,坚持每周三次健身房。兄弟们从夏天到冬天,一路烧烤啤酒、老北京刷锅。几乎一度要将减肥大业给荒废,健身也变成了一周一次。
2018年继续加油,管住嘴迈开腿。