api变更怎么搞

    分享到:

api的变更在库的开发维护过程中非常常见,库使用者很少时,直接强制更新没毛病,用的人多了,影响就会被放大,此时兼容就成了不得不考虑的事情。目前我大概见过几种比较常见的变更做法。

  1. 完全兼容。
    新api随便怎么搞,但要为老接口单独做一份兼容。例如libevent会单独将一些需要兼容的api统一放到一个特定的头文件中暴露出来。
  2. 编译时提醒。
    比如c++里面,可以直接把老接口的函数头加上__attribute__((deprecated(msg)))的修饰,用于提示新的替代api在哪里或者给出建议,当然也可以根据其他的预编译宏#error, #warning, #pragma message(msg)等来给出相应的提示。
  3. 文档化。
    每个版本或者库文档,说明的地方罗列好changes和api。总体说来,“完全兼容“通常对维护者是个包袱对用户是个便利,但是若原接口有隐含bug或者性能问题的时候,就不得不强制用户使用新api了。“编译提醒”是个折中,通常无需用户感知库的具体变化根据提示就能完成切换工作。“文档化”则直接把工作全部推给使用者了,通常老用户最为反感,工作量较大,一般在出现在大版本或存在重大特性无法进行兼容的场景下。

原创文章,转载请注明: 转载自下雨天
本文链接地址: api变更怎么搞

QR:  api变更怎么搞