如何写一个好的sdk

sdk 的作用是把一些功能封装起来,提供给别的开发者使用,如何才能编写一个好的sdk呢

首先,谁最有权力来判断我的sdk好不好呢?产品经理吗?领导吗?当然是我们的用户。
我们不妨以用户使用sdk的全流程来思考一下,好的sdk有怎样的特征

怎么做一个好的sdk

  1. 让用户选择
    1. 宣传已经接入的知名业务
    2. 强调团队已经产出的优秀产品
    3. 到内部论坛、外部宣传
  2. 让用户了解
    1. 编写更好的文档
    2. 提供playground
  3. 让用户更好的接入
  4. 让用户用的更好
  5. 让用户更好的解决问题
  6. 让用户更好的维护、升级

后面几点就详细讲讲吧

容易接入的sdk

  • 优雅的代码
    • 使用typescript或jsdoc来优化代码提醒
    • 完善代码注释
    • 良好的分类和代码组织
    • 有规律,良好的命名
  • 提供demo
    • 可下载可运行
    • 可在页面调试运行
  • 减少用户心智负担
    • 尽量减少需要的参数,提供默认参数
    • 允许集中配置
    • 屏蔽用户不需要操心的细节

好的sdk代码

  • 完成应该做的工作
  • 提供一定的自由度
  • 控制体积
    • 最好允许选择,组合功能来生成sdk包
    • 支持按需,分平台引入
    • 第三方依赖较少
    • 最小可用原则
  • 扩展性
    • 支持用户自己编写插件
  • 可维护性
    • 系统拆分为独立模块,降低维护复杂度
  • 兼容性、稳定性
    • 尽可能覆盖多的平台/系统
    • 跨端跨平台一致
    • 新版本的sdk与旧版本的兼容
    • 新老接口
    • 新功能
    • 稳定运行,不影响宿主
  • 高效
    • 高效率完成任务
    • 低内存占用

解决问题

  • 错误处理

    • 分类分级别
  • 在线答疑

    • 机器人自动答复
    • 研发同学值班

运维及升级处理

  • 如何版本处理
    • 向前兼容
  • 如何避免没有权限的人使用
    • 后端校验
    • 数字签名
  • 收集数据
    • 使用者情况

附录

solid原则

  • 单一职责:一个接口负责一个功能
  • 开闭原则:对扩展开放,对修改关闭。添加功能时加代码而不是改代码
  • 里氏替换:父类可以用子类替换
  • 接口隔离:不同功能的模块用不同的接口
  • 依赖倒置:高层模块不以来低层模块
支持作者

如果我的文章对你有帮助,欢迎 关注和 star 本博客 或是关注我的 github,获取更新通知。欢迎发送邮件到hpoenixf@foxmail.com与作者交流