《C++ API设计》读书笔记 第一章 API简介
声明:本博客仅为学习中的笔记,如有错误,欢迎指正!
1.1 什么是API
API:Application Programming Interface 应用程序接口。提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式。组件本身通常以软件类库分发,它们可以在多个应用程序中使用。
API 的目的是为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细节。
一个例子:用来读取GIF图片的API可能仅仅提供一个 LoadImage() 方法,后者接收一个文件名作为参数,并返回一个2维的像素数组。所有文件格式和数据压缩的细节全部隐藏在这个接口之下。
API : 另一种解释:Abstract Programming Interface. 抽象编程接口
1.2 C++ API通常会包含如下元素:
- 头文件。一组.h头文件。头文件定义了接口,使得客户端代码能够针对该接口进行编译。开源API还包括API实现的源代码(.cpp文件)。
- 类库。一个或多个静态库(Windows下的.lib文件,Linux下的.a文件)或动态库(Windows下的.dll文件,Linux下的.so文件)。客户端可以把它们的代码和这些库文件进行链接,从而未它们的应用程序添加相应的功能。
- 文档。如何使用API的概述信息,通常包含为API中所有的类和函数自动生成的文档。
1.3 API开发中的一些关键因素
- API是为开发者设计的接口。
- 多个应用程序可以共享同一个API。
- 修改API时,必须尽可能保证向后兼容。
- 出于向后兼容的需求,一定要具有变更控制流程。
- API的生存周期一般都比较长。
- 在编写API时,良好的文档必不可少,特别是当不提供实现的源代码时。
- 自动化测试同样也很重要。
1.4 文件格式和网络协议
每当创建一个文件格式或者客户端/服务端协议时,同时也要为其创建API。这样,规范的细节以及未来的任何变更都将是集中且隐蔽的。