什么样的API设计是好的设计?
极客时间编辑部
讲述:杜力大小:1.20M时长:02:38
日前,阿里研究员谷朴发文,分享了他们团队所认为的好的 API 设计。他们认为好的 API 有 3 个基础性的原则。所谓基础性的原则,是那些如果人们遵守了就可以让 API 在之后演进的过程中避免多数设计问题的原则。
1. 提供清晰的思维模型。API 是用于程序之间的交互,但是一个 API 如何被使用,以及 API 本身如何被维护,是依赖于维护者和使用者能够对该 API 有清晰的、一致的认识。这种状况实际上是不容易达到的。
2. 简单。在实际的系统中,尤其是考虑到系统随着需求的增加不断地演化,在绝大多数情况下,问题都是过于复杂的设计,而非过于简单,因此强调简单性一般是恰当的。
3. 容许多个实现 。一般来说,在讨论 API 设计时常常被提到的原则是解耦性原则或者说松耦合原则。然而相比于松耦合原则,这个原则更加有可操作性。如果一个 API 自身可以有多个完全不同的实现,一般来说这个 API 已经有了足够好的抽象,和自身的某一个具体实现无关,那么一般也不会出现和外部系统耦合过紧的问题。因此这个原则更本质一些。
谷朴还以 POSIX File API 为例,谈了谈一个优秀的 API 的成功之处。
首先,File API 已经有几十年历史(从 1988 年算起将近 40 年),尽管期间硬件软件系统的发展经历了好几代,这套 API 核心保持了稳定。谷朴称,这是极其了不起的。
其次,API 提供了非常清晰的概念模型,每个人都能够很快理解这套 API 背后的基础概念,什么是文件,以及相关联的操作(open, close, read, write),清晰明了。
然后,File API 支持很多的不同文件系统实现,这些系统实现甚至于属于类型非常不同的设备,例如磁盘、块设备、管道(pipe)、共享内存,等等。这些设备有的是随机访问的,有的只支持顺序访问,有的是持久化的有的则不是。然而所有不同的设备不同的文件系统实现都可以采用同样的接口,使得上层系统不必关注底层实现的不同,谷朴表示这是这套 API 强大的生命力的表现。
例如同样是打开文件的接口,底层实现完全不同,但是通过完全一样的接口,不同的路径以及 Mount 机制,实现了同时支持。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论