怎么学习 API 设计?

2015-05-05 12:34:27 +08:00
 herozem

精确点说, 目前是C的API。

想问问大家有什么推荐的API学习的书吗? 最好是C语言的。

我觉得API设计是一门艺术, 很想学习怎么去设计一个简单好用的API, 学习怎么处理一些具体问题:

例如是调用者保证输入正确还是被调用者保证输入正确; 检测到输入错误是该报错后终止还是报错后返回函数等等。

2688 次点击
所在节点    问与答
14 条回复
herozem
2015-05-05 12:38:38 +08:00
突然想到KISS原则。 不知道算不算。 但是我想还需要更具体的一些指导。
airyland
2015-05-05 12:43:13 +08:00
看下这些原则有没有用: https://github.com/bolasblack/http-api-guide
herozem
2015-05-05 13:06:20 +08:00
@airyland 谢谢, 发现和C不是特别相关。

另外发现有一本相关的书: <C语言接口与实现:创建可重用软件的技术>, 下午去图书馆借来看看。
c742435
2015-05-05 13:12:38 +08:00
应该是你的api保证输入正确。这样输入错误的话,你的api能够检查出来给予反馈,而不是作出奇怪的行为或者额崩溃。
检测到输入错误时,根据错误类型:
如果是api用法错误或其他debug期间就应该能检查出来的错误,应该直接终止。如果是可预期的运行时错误,而错误判断本身比较复杂的,可以将错误返回。
c742435
2015-05-05 13:16:40 +08:00
其实api设计就是干净利落用着舒服就行了。
前段时间接过一些统计api啊推送api啊什么的,设计的也不过如此,而且经常变来变去。
c742435
2015-05-05 13:17:01 +08:00
还有支付api
herozem
2015-05-05 14:16:40 +08:00
@c742435 谢谢
jadecoder
2015-05-05 14:30:15 +08:00
Google一个工程师写的 《How to Design a Good API and Why it Matters》
http://lcsd05.cs.tamu.edu/slides/keynote.pdf
fundon
2015-05-05 16:11:45 +08:00
herozem
2015-05-05 16:24:07 +08:00
@jadecoder 谢谢, 已收下
stiekel
2015-05-05 16:32:32 +08:00
《C语言接口与实现:创建可重用软件的技术》这书明显不是讲API的。如果你要的是这书中所说的接口,那你的目标就不是API。
herozem
2015-05-05 16:45:13 +08:00
@stiekel 是的。 我在图书馆的时候翻阅了一下。只能说被标题骗了
zhczhy
2015-05-05 17:49:16 +08:00
可以看一下Qt官方的http://qt-project.org/wiki/API-Design-Principles,另外《代码大全》上也有一些关于防御式编程、变量命名等与API设计相关的内容。
> 例如是调用者保证输入正确还是被调用者保证输入正确,可以看一下strcpy的实现。
herozem
2015-05-05 17:51:10 +08:00
@zhczhy thanks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/188569

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX