SDK是什么
SDK(Software development kit),即软件开发工具包,它是一个可安装包中的工具集合。它们通过编译器、调试器,有时还有软件框架来促进应用程序的创建。它们通常特定于硬件平台和操作系统组合。创建具有高级功能的应用程序,例如广告、推送通知等;大多数应用软件开发人员使用特定的软件开发工具包
开发特定平台的应用程序需要一些 SDK。例如,在Java平台上开发Android应用程序需要Java 开发工具包。对于iOS应用程序(应用程序),需要iOS SDK。对于通用 Windows 平台,可能会使用.NET Framework SDK 。还有一些 SDK 添加了额外的功能,可以安装在应用程序中。
设计原则
如何设计SDK,其实更多取决于你的场景,或者SDK最终的用途;比如一个应用于浏览器端的SDK和应用于服务端的SDK就会有明显的差别,但这之间存在着一些共通的原则:
-
- 最小可用性原则,即用最少的代码实现最多的功能
-
- 最少依赖原则,即最低限度的外部依赖
好的 SDK 应该具有简单易用、通俗易懂、便于扩展、高效稳定等特点。
易用性
易用性直接决定了SDK在项目中推广落地的难易程度,好用的SDK应该有简单明确的调用方式、清晰明了的命名
- 统一调用:将复杂的功能进行封装,对外提供统一的调用入口,尽量的屏蔽实现细节,将对部分公共参数的获取封装在SDK中,减少用户调用流程和对参数的理解成本
- 集中配置:参数配置化,提供统一的方法或入口允许用户集中配置公共参数
- 良好命名:对外暴露API的命名尽量清晰明了,较好的命名是用户不需要看相关文档只需要看到API就能大概知道其具体功能
可理解性
有时,用户可能不仅仅满足于对SDK的使用,而是想要了解API的实现细节以确认其是否符合具体的业务场景,可能还需要有针对性的对其源码进行二次改造,故SDK应尽量做到以下几点:
- 结构清晰:清晰的代码目录结构、符合规范的代码能够让人快速的理解源码
- 统一风格:风格的统一更多的是代码规范的统一,包括统一的技术栈、编码规范、设计规范等
- 编写注释:注释的重要性不言而喻,其实注释不仅仅能帮助别人快速的理解源码,更能帮助你在后续的业务迭代时快速回忆起之前的复杂逻辑及实现核心
- 说明文档:
可扩展性
这里会涉及到SDK开发的一大难点,就是不仅要考虑到大部分的使用场景,也要能尽量满足部分用户定制化的需求,那要如何在这两者之间取舍呢?
- 轻量依赖:SDK尽量减少对其他类库的依赖
- 自定义实现:设计SDK时就应该考虑到其扩展性,较普遍的做法是提供通用的接口或抽象类让用户通过继承等方式来实现自己的诉求
高效稳定
SDK一旦开始被业务方使用,那其稳定性就是一个很重要的指标,修改不可避免,那能避免的就是在修改的过程中如何尽可能减少对已有功能的影响,以及在修改之后发布之前尽可能的发现问题解决问题
- 兜底策略,无论什么情况不能影响应用的正常使用
- 单元测试
- 兼容性
- 异常捕获暴露