大家好 , 我是鱼皮 。
最近因为工作需要 , 自己动手写了一些项目的通用 SDK 。在编写的过程中 , 我阅读和参考了不少公司中其他大佬写的 SDK , 也总结了一些开发 SDK 的经验和技巧 , 给大家分享下~
在此之前 , 必须先给大家解释一下啥是 SDK 。
啥是 SDK ?SDK(Software Development Kit)即 软件开发工具包 , 就是帮助我们开发出软件的工具集合 , 除了代码之外 , 一般还要搭配文档、示例等 。
一般 SDK 都是需要 引入 到项目中使用的 。比如学 JAVA 的朋友最早接触的 JDK , 就是用来开发 Java 软件的工具包 , 使用时需要编写 类似 import java.util.* 的语法来引入 。此外 , 大部分的 SDK , 都是需要通过人工或项目管理工具 , 将其文件下载到指定路径才能引入 。
文章插图
引入 SDK
使用 SDK 有什么好处呢?举个例子 , 假设公司有很多系统都需要实现文件上传功能 。之前看过我文章的朋友应该知道 , 一个优秀的文件上传功能并不好做 , 要考虑很多点 , 比如分块、断点续传、秒传、文件存储、文件管理等 。
文件上传设计:https://mp.weixin.qq.com/s/3QXe4MSObJTP43M2gXWSlA显然 , 我们不需要给每个系统都去开发文件上传 , 而是只需要有一个团队舍身而出 , 编写一套 通用的 文件上传 SDK , 然后让需要实现同样功能的系统引用就行了 , 这样就 大大减少了工作量、提高了开发效率 。
文章插图
通用 SDK
有点前人造车 , 后人享乐的意思~
编写 SDK 又称 造轮子 , 好的轮子不仅能够帮助团队省时省力 , 还能够减少一些项目在相同功能上的差异 。就不要说同一个功能 , 小王写的要运行 1 秒 , 小李写的要运行 1 小时!
而假设每个系统都去开发同样的功能 , 那就是 重复造轮子 , 在大多数情况下 , 不是明智之举 。
理解了啥是 SDK 后 , 来看看如何写出优秀的 SDK 吧~
手写 SDK 经验总结好的 SDK 应该具有简单易用、通俗易懂、便于扩展、高效稳定等特点 。
易用性如今 , 现成的轮子实在太多了!如何让你的轮子脱颖而出呢?那就要先提升 SDK 的易用性 。
我自己在技术选型时 , 就会倾向于优先选择简单易用的 SDK , 最好是几行代码就能轻松使用 , 而不是必须要我读完老长一份文档 , 再写个几十行代码才能生效 。
就和产品说明书一样 , 太复杂直接把人劝退 。
我们可以通过以下几点提高易用性:
统一调用将复杂的功能进行封装 , 对外提供统一的调用入口 , 尽量屏蔽一些实现细节 , 减少用户调用的流程和对参数的理解成本 。
举个例子 , 下面是两种日期处理函数 。用户不需要关心他们是如何实现的 , 只需要知道怎么用、传递哪些参数、得到哪些返回值就行了 。
// 第 1 种:需要 new 对象DateUtils dateUtils = new DateUtils();dateUtils.setDate('2021-08-31');Date date = dateUtils.parse();// 第 2 种:直接调用Date date = DateUtils.parse('2021-08-13');
那大家觉得哪种更易用呢?集中配置将复杂的参数配置化 , 不需要让用户到处写参数 , 而是通过一个配置文件统一管理 。
Java 主流开发框架 SpringBoot 就是典型的例子 , 假如用户想改变内嵌服务器启动的端口、亦或是改变数据库的连接地址 , 不需要写代码 , 而是改一下配置文件就行了:
# 服务器配置server:port: 8081# 数据库配置db: ip: 10.0.0.1
此外 , 这样也便于维护项目和实现多环境 。良好命名给 SDK 的函数取名称时 , 尽量让它符合用户的习惯 。
比如具有解析功能的函数 , 可以叫 "parseXXX";判断是否为空的函数 , 可以叫 "xx.isEmpty" 等 。最好能做到让用户不看文档 , 只通过函数名称和参数 , 就知道你这个函数是做什么的 。
推荐阅读
- ntopng 的安装源码安装,一个非常棒的流量监控工具
- 忍冬书评,盘叶忍冬的主要用途
- 轻松搞定Excel气泡图制作
- 桑葚干能提高性功能吗,用桑葚干泡的水能天天喝吗喝桑葚干泡的水对身体有哪些好处
- 干槐花包饺子做法大全,槐花饺子的做法
- 金银花泡水喝的作用与功效,金银花泡水喝的功效和作用
- 禹州药材批发价格表,禹州药交会的特点
- 程序员的阴暗面
- 治疗肾病最好方法,鼻窦炎的最好治疗方法
- 石斛枸杞泡水喝的功效,石斛花泡水喝的功效及药用价值