Bask

Shanghai Based Android Engineer currently develop Payment systems at Ctrip

👨‍🔧‍

解耦与拆分

By Bask on September 04, 2018

This post is over a year old. Some of the content may be out of date.

最近公司做了一个需要拆分SDK的项目,所以涉及了很多拆分的内容,加之有比较多解耦的工作,所以想聊一聊解耦与Java拆分的一些小心得。

背景

因为部分模块中部分功能需要拆分,但是绝大部分是不需要的,还有很多依赖模块需要基础添加,所以这项工作看起来非常巨大,并没有办法直接拆分。SDK尽可能的小,并且需要减少相互之间的依赖。

解耦

在拆分SDK的过程中最先做的应该就是解耦——业务功能性拆分。将业务代码先都拆分到新项目中,这些代码是最顶层的东西,这个时候肯定会有很多文件都会爆红,不要担心,添加依赖其实是下一个步骤的事情。

解耦还需要做那些事情?

接下来就需要分离业务代码以及拆分的依赖代码,需要新建一个依赖目录 例如报名:com.tzduan.demo.sdk.base,可以看出相对应的业务代码应该在com.tzduan.demo.sdk.business下面。这样做是为了便于之后的维护,依赖与业务拆分,避免业务开发人员一不小心修改依赖的代码。

拆分

在代码文件爆红之后,其实就是一个漫长又无聊的过程了,讲爆红的文件一个一个的添加到拆分SDK中,使他们不再爆红。这个过程非常的无脑,但是有一个好处,就是可以保证不会将非本次业务的代码移动出来,又避免了重新开放一份代码的重复造轮子的过程。这期间需要注意的是,依赖文件很有可能是互相依赖的,他们其中的方法很有可能相互引用,导致变相包过大,所以只需要引入业务使用的方法就好,并不要将所有的文件都引入。

拆分tips

因为引入了好多的文件,也稍微有点小心得: 一开始在demo程序中不要依赖SDK module 因为不依赖SDK module的时候你的demo也是可以跑的 在添加依赖的时候先添加资源文件 因为先添加资源文件依赖后,ide可以通过sync不对资源文件报错 在添加java文件或者Kotlin文件的时候,先添加Model文件,然后view文件,presenter文件,最后添加util部分 model比较单一,util关联的文件过多,所以最后添加

最后拆分过程

上面都是讲我这次拆分的思想,最后我想分享一下我这次拆分的过程: