设计良好 API 的特点
这里探讨的 API 均为系统边界的API设计,而对于内部 API 来说不在探讨范围之内。
变动困难
API 就像一个人一样,我们和一个API打交道的时候需要了解这个人的特性偏好等,
有的人很好相处,而有的人让人很头疼,尤其是你不得不和他打交道的时候。
和人一样,如果你不得不和他打交道,要改变他的秉性是很痛苦的,人的“本性难移”, API 也一样,一旦发布了,要改变的成本就很大很大。
好的 API 应该具有:
- 易于学习
- 即使没有文档也易于使用
- 不易误用:这一点很重要,要减少使用者的心智负担
- 使用 API 的代码易于维护。这个有点不一样,不是 API 本身易于维护,而是 API 的友好度。
- 比如接口功能单一,使用简单,使用者的代码也会相应的更易于维护
- 易于满足需求:API 的完备性和正交性。能够容易的满足需求,完备性保证功能完整,
- 正交性保证接口的简洁性,不需要为所有的需求提供接口,而是由用户去组合。
- 易于扩展
怎么样设计良好的 API
基本原则:
- 专一:一个 API 的功能应该是单一的,需要能够很容易的解释和理解,也就会更好用。
- 尽可能的小:小有很多的优势,易于理解和维护。
- 尽量少的外部依赖:减少使用者的成本
- 设计不被实现影响:不要暴漏实现细节给用户
- 竟可能少的暴露,不止是内部细节,对于不必要的接口尽量不要发布,比如使用不多的功能,
- 可以暂时不暴露接口。
- 良好的命名:尽量做到自描述。
- 完善的文档
- 考虑性能