SDK 开发规范 & 经验总结

开发规范

1. 开发规范

  • API功能单一,减少类似enum的入参设计
  • 线程处理, 如非必要不要使用应用主线程,不能长时间占用,SDK内应有一个专门线程处理SDK 相关操作
  • 尽量减少全局回调
  • 提供异常情况回调和输出方便接入方定位,错误回调采用code+msg组合
  • 能不用单例的就尽量少的使用
  • 对iOS 来说能不用xib 就不用,能不用通知就不用通知

2. 命名规范

  • 接口名称,参数命名清晰规范,参数尽可能少,所有传入参数要做好校验,禁止使用拼音和中文
  • 类名,全局静态变量,宏等命名尽量使用自定义前缀来保证唯一性,避免与其他模块发生命名冲突。c++ 可以使用namespace来声明类和结构的模块层级,还能避免命名冲突。
  • 函数命名遵循共性,不要出现歧义或者违背大家的共识
  • 所有资源命名前缀:imageName_工程命名_平台名:toast_xxxSDK_iOS

3. 日志设计

  • log模块相关功能可配置(比如日志开关,日志文件输出目录,日志打印接管接口)
  • log优先级分不同级别,可控制打印log级别

4. 第三方库依赖处理原则

  • 最小可用性原则,即用最少的代码,如无必要勿增实体;
  • 最少依赖性原则,即用最低限度的外部依赖,如无必要勿增依赖
  • SDK开发中,需要尽量避免依赖第三方库以免引起不必要的冲突;如实在需要,可以以源码形式引入稳定版本,并对类,结构,全局变量等添加前缀以避免外部使用到该第三方库时产生冲突。

5. 版本管理规范

使用三位版本号,每位版本号最高三位数字如:1.0.12

  • 版本号递增原则:
    • 第三位:bug修复,极小的变更
    • 第二位:一般的功能迭代
    • 第一位:项目重构,功能变更较大,需团队共同确定

6. 打包原则

  • 使用脚本一键打包,提升打包效率,降低手动打包带来的出错率
  • 要提供示例工程, 示例工程必须让开发者以最低的成本运行起来,可以用来验证主要功能接口 以及 SDK的接入方式。

经验 & 问题总结

  • 业务型SDK里,当业务形态发生变化后,之前的接口参数无法满足需求,该如何处理?

    1. 添加新的接口,老接口标识为 该版本弃用,在SDK迭代数个版本后删除。
  • 如何设计log的tag,才便于跟踪某个业务场景下产生的问题?