`

优秀API设计的十大原则

 
阅读更多
每个软件开发人员都使用API。“优秀”的API设计就像魔法。不过,我不知道有多少人可以解释为什么有的API很复杂、很难学,而有的则干净、简单、使用起来堪称是一种快乐。关于这个问题,我将在文中回答,并提供优秀API设计的十条法则。



1.只做你今天需要的

这是最顶级的规则。只解决今天必须解决的问题,最小化需要完成的答案。解决明天的问题的诱惑力是巨大的。但是一定要顶住诱惑!不要提前发布代码,重点是注重缩小发布周期。如果需要花几个小时的时间来回答新问题,那么就不用再猜测明天会出现什么问题了。



2.API模块化

将大型问题转化为规模较小的、可单独解决的问题。模块化API更容易学习,并且可以随时间而改变。你可以用新模块替代旧模块。可以一个一个地教导模块。也可以将API的实验部分从稳定或传统的部分中单独分出来。



3.使用结构化语法

使用结构化的API语法:用thing.action或thing.property代替do_action_with_thing。语法将自然而然地适应模块化的方法,其中每个模块是一个类。



4.使用自然语义

不要发明新概念。只使用开发人员众所周知的概念,作为类系统的基础。如果你发现自己需要解释概念,那说明你出错了:要么你在解决以后的问题,要么你正在错误地构建API。



5.API的自我约定

每个类都要严格使用相同的样式和约定。一致性是指当一个人学会这一个类时,他就能够融会贯通地掌握全部的类。文档化约定,让它们成为贡献者必须的标准。



6.API的可扩展性

易扩展性有许多好处,并不仅仅在于受到贡献者的欢迎。它还可以让你延缓实现功能,因为“如果需要的话,后面再添加也很方便”。不需要的功能就不添加,这也是一种双赢。



7.完全测试

每个类和方法必须经过恶意代码的完全测试。要像写代码一样写测试,然后像API提供给外界约定文档一样使用测试。每当代码改变的时候就运行这些测试。不要担心代码覆盖率。重要的是外部约定。也可以考虑使用约定生命周期。



8.分层式成长

保持API突出重点,然后在顶部将新的API分层,以便于它们能随着时间的推移成长。可扩展性并不意味着无限期的成长。明确API的范围,并在范围内执行。



9.保持简单易用

最终的测试要看API的简单易用程度。你写的例子,能不能让你的代码看起来更简单?你是不是强迫用户说明他们不在乎的选项?有没有毫无价值的额外步骤?要注重约减少API的可视面积。



10.保持可移植性

不要让系统概念泄漏到API。整洁有目的地抽象:这个API可以运行在任何操作系统上。API必须能够隐藏实现,但要注意第4条规则,以及要使用自然抽象。



欢迎大家说说自己的看法。
分享到:
评论

相关推荐

    RESTful-API设计原则与规范

    二、RESTful API应遵循的原则 1、协议(Protocol) 2、域名(ROOT URL) 3、版本(Versioning) 4、路径(Endpoints) 5、HTTP动词(HTTP Verbs) 6、过滤信息(Filtering) 7、状态码(Status Codes) 8、错误处理...

    基于 RESTful 架构的API设计原则和规范.docx

    api 设计规范文档。基于RestFul。

    C++ API设计 中文高清扫描版 带完整目录书签 PDF

    《C++ API设计》探索了常常被忽视的技术性和非技术性问题,有助于推动成功的设计决策,从而产生高质量的、健壮的而且可以长期使用的API。” ——Eric Gregory,Pixar动画工作室软件架构师 “《C++ API设计》面向中...

    API设计教程

    API有哪些品质要求,有哪些关键要素,有哪些通用的技巧,设计时要遵循哪些原则……这些问题都能在本书中找到答案。 本书主要内容。 第1章:API简介。阐释API的概念及其独特之处,概览全书内容。 第2章:特征。解答...

    RESTful API设计规范

    RESTful API设计规范

    C++ API 设计

    对于这一软件工程上的难题,martin reddy 凭借长期的从业经验,对优质api 所应具备的各要素进行了全面分析,针对api 的不同风格及模式,以及大型长期项目的内在需求,给出了种种最佳设计策略,从而对api 设计过程的...

    C++ API设计.pdf

    C++ API设计.pdf

    RESTful API设计规范.pdf

    RESTful API设计规范.pdf

    RESTful API 设计最佳实践

    这些REST的关键原则与将你的 API 分割成逻辑资源紧密相关。使用HTTP请求控制这些资源,其中,这些方法(GET, POST, PUT, PATCH, DELETE)具有特殊含义。 一旦定义好了资源, 需要确定什么样的 actions 应用它们,...

    API程序设计实例

    window API程序设计实例,不用MFC框架

    c++api设计

    c++api设计,超清版,c++api设计,超清版,c++api设计,超清版,

    ASP.NET+Web+API设计(美)布洛克著

    ASP.NET WEB API 设计(美) 布洛克著,带完整书签,学习Web API很好的参考书籍

    Api设计规范

    Java API Design Checklist,如何设计api,设计api规范

    Windows API 程序设计参考大全.pdf

    本书是关于MicrosoftWin32.API函数的完整参考手册。本书详细介绍 了每一个Win32 API函数的使用方法,其中着重介绍其原型表示、函数说明 、参数说明、注意事项、相应头文件(.H)、链接库(.LIB或.DLl)和典型 ...

    C++API设计源代码

    C++API设计一书的源代码即: This package contains the C++ source code examples from the book "API Design for C++" by Martin Reddy.

    深度 -API 设计最佳实践的思考.pdf

    API 设计面临的挑战千差万别,很难有处处适用的准则,所以在讨论原则和最佳实践时,无论这些原则和最佳实践是什么,一定有适应的场景和不适应的场景。因此我们在下文中不仅提出一些建议,也尽量去分析这些建议在什么...

    API设计实战.pdf

    本书帮助你解决API 设计方面的问题,共分3 个部分,分别指出学习API 设计是需要进行科学的训练的、Java 语言在设计方面的理论及设计和维护API 时的常见情况,并提供了各种技巧来解决相应的问题。  本书作者是...

    Rest API设计规范指南

    Rest API设计规范指南

    设计Go API的管道使用原则

    设计Go API的管道使用原则

    java API设计

    博文链接:https://handmu.iteye.com/blog/38870

Global site tag (gtag.js) - Google Analytics