如何合理封装你的轮子、飞机、大炮(以封装OkHttp为例)
前言
对于程序员来说,很多时候,我们都在造房子,从学会框架或者是学会构建整个项目之后,慢慢的我们就会觉得自己在做的事情是一种重复劳动,很多时候只不过是换个面孔而已。而更快的造房子,造好看的房子可能是进一步你想要做的。
封装
可能是你要学会的第一步,它能帮你学会造出你需要的合适的工具,而这些工具能帮你更快的造出你想要的房子。
封装的定义
我对封装的定义 ———— 将项目中需要多次使用,或者是重复劳动,或者是复杂且难看的代码,打包在一起(抽离出来)作为一个通用的东西来使用
封装可以是对自己写的代码进行封装,也可以是对别人写的工具或者是框架进行封装,都可以。俗话说的好,写代码就是:要不就是将别人的轮子拿来用,要不就自己造轮子给别人用。别人的轮子不够用,就改装成飞机大炮自己用。
封装的意义
1、减少重复代码,让代码看起来整齐好看
2、减少重复开发,让开发速度变快
3...
这里不列举了,说白了向面试官吹牛也可以算是意义吧...
封装的步骤
1、找到需要封装的代码(封装永远不是空想出来的)
可能是你项目本身需要封装,又或是你看别人工具想要封装...
2、列出封装的目标
一开始我建议还是列出来靠谱,因为这样不会让你忘记最终的目标是什么。
3、封装
然后就开始做吧!
4、测试
写出你认为所有的在实际中的测试用例单元测试来测试你的工具
5、优化
对不合理的地方进行优化,对用的不爽的地方进行优化
6、打包
打包发布,到实际的生产中去使用吧
以OkHttp为例进行封装
---如果你不知道okhttp那么你可以去了解一下再往下看。
找
在实际的项目中如果要发送http请求,那么我喜欢使用okhttp工具来完成这个事情,而实际使用的时候,我们每次请求都需要构建整个请求,显得非常麻烦,每次都需要对请求的参数和返回的参数都进行构建,也很麻烦,所以我觉得有必要封装一下
目标
我只是封装三种类型的请求:
1、get请求
2、post请求 json格式
3、post请求 form格式
请求返回格式都是为json格式
要求:
调用请求方法,输入url地址、请求对象,输出请求返回的对象
封装 + 测试 + 优化
(第一步最关键:先上网找找有没有合适的,别人已经封装过的信息,一方面是看看是否适合自己使用,另一方面,即使不能符合自己,那也可以看看是否能从中找到一些可以值得借鉴的地方)
整个过程我描述一下:
1、先把所有的代码写在了一个类里面
2、然后分离出需要的工具接口
3、然后分离内部需要的方法
4、抽离重复的部分
5、针对传入对象进行泛型优化
6、编写单元测试进行测试
7、编写注释和使用markdown
全部代码:https://github.com/LinkinStars/http-helper
总结
1、这里封装是很个性化的一种封装,这样的封装多数是一种定制化的工具,你自己用会觉得很方便。
2、封装会用到很多技术:泛型、反射...
3、封装需要考虑的点很多:因为作为一个工具,你需要考虑到很多人的使用情况,很多测试都是需要做的。
4、封装的优化很多时候会考虑使用设计模式让整体更加优雅。
5、一开始是封装一些别人写的工具,后面是封装一些自己写的代码,在后面是封装一些框架。
6、越原始的封装,封装到最后依赖的越少,封装最后的包越小,使用起来越来越方便。
这里是对封装的一个举例,封装的工具本身不一定对你适合,你需要封装属于你自己的工具,如果你有好的建议,赶紧砸过来吧。