V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
herozem
V2EX  ›  问与答

怎么学习 API 设计?

  •  
  •   herozem · 2015-05-05 12:34:27 +08:00 · 2846 次点击
    这是一个创建于 3521 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    另外发现有一本相关的书: <C语言接口与实现:创建可重用软件的技术>, 下午去图书馆借来看看。
    c742435
        4
    c742435  
       2015-05-05 13:12:38 +08:00
    应该是你的api保证输入正确。这样输入错误的话,你的api能够检查出来给予反馈,而不是作出奇怪的行为或者额崩溃。
    检测到输入错误时,根据错误类型:
    如果是api用法错误或其他debug期间就应该能检查出来的错误,应该直接终止。如果是可预期的运行时错误,而错误判断本身比较复杂的,可以将错误返回。
    c742435
        5
    c742435  
       2015-05-05 13:16:40 +08:00
    其实api设计就是干净利落用着舒服就行了。
    前段时间接过一些统计api啊推送api啊什么的,设计的也不过如此,而且经常变来变去。
    c742435
        6
    c742435  
       2015-05-05 13:17:01 +08:00
    还有支付api
    herozem
        7
    herozem  
    OP
       2015-05-05 14:16:40 +08:00
    @c742435 谢谢
    jadecoder
        8
    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
        9
    fundon  
       2015-05-05 16:11:45 +08:00
    herozem
        10
    herozem  
    OP
       2015-05-05 16:24:07 +08:00
    @jadecoder 谢谢, 已收下
    stiekel
        11
    stiekel  
       2015-05-05 16:32:32 +08:00
    《C语言接口与实现:创建可重用软件的技术》这书明显不是讲API的。如果你要的是这书中所说的接口,那你的目标就不是API。
    herozem
        12
    herozem  
    OP
       2015-05-05 16:45:13 +08:00
    @stiekel 是的。 我在图书馆的时候翻阅了一下。只能说被标题骗了
    zhczhy
        13
    zhczhy  
       2015-05-05 17:49:16 +08:00
    可以看一下Qt官方的http://qt-project.org/wiki/API-Design-Principles,另外《代码大全》上也有一些关于防御式编程、变量命名等与API设计相关的内容。
    > 例如是调用者保证输入正确还是被调用者保证输入正确,可以看一下strcpy的实现。
    herozem
        14
    herozem  
    OP
       2015-05-05 17:51:10 +08:00
    @zhczhy thanks
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1104 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.