zoukankan      html  css  js  c++  java
  • 如何合理封装你的轮子、飞机、大炮(以封装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、越原始的封装,封装到最后依赖的越少,封装最后的包越小,使用起来越来越方便。

    这里是对封装的一个举例,封装的工具本身不一定对你适合,你需要封装属于你自己的工具,如果你有好的建议,赶紧砸过来吧。

  • 相关阅读:
    最大子数组问题(分治策略实现)
    Solving the Detached Many-to-Many Problem with the Entity Framework
    Working With Entity Framework Detached Objects
    Attaching detached POCO to EF DbContext
    如何获取qq空间最近访问人列表
    Health Monitoring in ASP.NET 2.0
    problem with displaying the markers on Google maps
    WebMatrix Database.Open… Close() and Dispose()
    Accessing and Updating Data in ASP.NET: Retrieving XML Data with XmlDataSource Control
    Create web setup project that has crystal reports and sql script run manually on client system
  • 原文地址:https://www.cnblogs.com/linkstar/p/9667409.html
Copyright © 2011-2022 走看看