1.1 什么是API
概括的说,API定义了一些可复用的模块,使得 各个模块化功能块可以嵌入到最终用户的应用程序中去。
1.1.2 C++中的API
严格来说,API只是简单描述了如何与组件进行交互。也就是说,它对某个组件进行抽象,并提供功能说明。事实上,许多软件工程师更喜欢将API这个缩写扩展为Abstract Programming Interface,而非Application Programming Interface。
C++ API通常会包含如下的元素:
(1)头文件:一组.h头文件。头文件定义了接口,使得客户端代码能够针对该接口进行编译。开源API还包括API实现的源代码(.cpp文件)
(2)类库:一个或多个静态库或动态库文件,它们提供了API的具体实现。客户端可以把它们的代码和这些库文件进行链接,从而为它们的应用程序添加相应的功能
(3)文档:如何使用API的概述信息,通常包括为API中所有的类和函数自动生成的文档
1.2API设计上有什么不同
下面列举一些在API开发中的关键因素:
- API是为开发者设计的接口,如同GUI是为用户设计的接口一样
- 修改API时,必须尽可能保证向后兼容
- 要有变更控制流程
- 良好的文档必不可少,尤其是当不提供实现的源代码时
- 自动化测试同样也很重要。当你对API的实现进行重大修改时,如果有一套完整的回归测试验证并未改变所需的API行为,那么就会更有信息地保证不会让客户的程序崩溃
1.3为什么使用API
在软件项目中为什么要关注API,这一问题可以从两方面理解:
- 为什么要设计编写API
- 为什么要在应用中使用其他人提供的API
下面的小节将回答这两方面的问题,并指出在项目中使用API的各种好处
1.3.1 更健壮的代码
构建API让其他开发人员使用你开发的模块的好处:
- 隐藏实现
- 延长寿命
- 促进模块化
- 减少代码重复
- 消除硬编码
- 易于改变实现
- 易于优化
1.3.2 代码复用
1.3.3 并行开发
1.4 何时应当避免使用API
如果编写的是不需要和其他客户端通信的内部模块,那么为模块创建并维护稳定公有接口的额外开销就不值得了。
另一方面,当你想在应用程序中使用第三方API时,面临如下这些情况时,你应该花精力自己实现代码或寻找替代的解决方案:
-
许可证限制
-
功能不匹配
-
缺少源代码
-
缺乏文档
内容出自《C++API设计》([美] Martin Reddy 著 刘晓娜 臧秀涛 林建 译)
如有侵权,联系删除