API
API提供了对某个问题的抽象,以及客户与解决该问题的软件组件之间进行交互的方式。
API是一个明确定义的接口,可以为其他软件提供特定服务。
现代应用程序通常都是基于很多API建立起来的,而这些API往往又依赖于其他API。
目的是为某个组件的功能提供一个逻辑接口,同时隐藏该模块内部的实现细节。
API设计中的一些关键因素
- API是为开发者设计的接口,如同GUI是为用户设计的接口一样。
- 多个应用程序可以共享一个API。
- 修改API时,必须竟可能保证向后兼容。
API的生成周期一般比较长。为了创造良好的API,在前期要投入巨大的成本,因为规划、设计、版本和审查开销是必不可少的。
API描述了其他工程师构建他们的应用软件所使用的软件。因此,API必须拥有良好的设计、文档、回归测试,并且保证发布之间的稳定性。
为什么使用API
- 更健壮的代码
- 隐藏实现
- 延长寿命
- 促进模块化
- 减少代码重复
- 消除硬编码假设
- 易于改变实现
- 易于优化
- 代码复用
代码复用就是使用已有的软件去构建新的软件。软件开发从本质上已变得更加模块化。 - 并行开发
假设你正在编写一个字符串加密算法,其他开发者需要使用该算法将数据写入配置文件。一种做法是让其他开发者等你完成所有工作,然后在其文件输出模块中使用你的算法。然而,更有效率的做法是,你们提前见面协商好恰当的API,然后你把API放在适当的位置,而API仅仅其占位符的作用。
实际上,有些接口问题很可能在编写代码之前并没有预料到,因此API设计可能需要多次迭代才能保证其恰到好处。
何时应当避免使用API
如果编写的是不需要和其他客户端通信的内部模块,那么为模块创建并维护稳定公有接口的额外开销就不值得了。
假设你是一位想在应用程序中使用第三方API的软件开发人员,在如下情况下避免使用特定的API:
- 许可证限制
- 功能不匹配
- 缺少源代码
- 缺乏文档