如何设计API 摘要 《C++API设计》
许多软件工程师更喜欢把API 缩写为 Abstract Programming Interfaces 而非Application Programming Interfaces.
API 在c++中包含多个头文件及相关辅助文档
接口是开发者所写的最重要的代码,比起相关的实现代码出现问题,修复接口出现的问题的代价更大。
API是为编程人员所开发的用户接口,你的API可以被你没有想过的方式调用
修改API时必须保证向后兼容
API的生命周期比较长,为了创建好的API前期需要比较大的成本。因此规划、设计、版本、审查比不可少,后期大幅降低长期成本,对实现的更新改进不会影响客户
编写API时,良好的文档必不可少,尤其在不提供源代码的情况下。
自动化测试也非常重要,其他成千上万的开发人员依赖你代码的正确性,当对API进行修改时,一套完整的回归测试更有信心保证客户的程序不会奔溃。
API的好处
1.隐藏实现:通过隐藏内部实现细节,开发人员可以未来自由修改代码实现,不给用户造成重大影响
2.延长寿命:随着时间的延长,那些公开了实现内部细节的代码会变得错综复杂,系统的其他部分要依赖于另外的实现细节,系统会变得脆弱、僵化、顽固且粘渧性高,因此事先设计好的API,能后期保证一致性,软件寿命延长
3.促进模块化:API通常完成具体的任务和用例。API定义了一组模块化的功能集,大量API开发的应用降低了耦合,促进了模块化。
4.减少代码重复:通过将所有接口的逻辑置于一个接口之后,就将程序的某种行为统一处理,有助于消除代码复制。
5.消除硬编码假设:很多程序包含硬编码的值,并且不断复制,
6.易于改变实现:
7.易于优化:隐藏了实现细节不用,在优化代码时不用考虑客户端的调用
便捷API:简化API是一项困难的事情,减少API函数与API易于各种客户使用之间存在天然的矛盾
渐进式公开,API通过易用接口呈现基本功能,同时将高级的功能隐藏到另一个独立的层次中。
易用性:优秀的API设计应该使简单的任务更简单,使人一目了然。好的API可以让客户通过方法的签名知晓其使用方法,而不需要文档。遵循最小惊奇(leaset surprise)
1.可发现性:可发现的API要求用户能够通过API自身明白如何使用它们,不需要任何解释和文档。
2.不易误用:优秀的API不近易于使用,还要不易误用,这个是最重要的通用接口设计原则。
3.一致性:优秀的API应该采用一致的设计方法,以便于用户记住其风格,进而更容易被用户采用。比如命名约定,参数顺序,标准的设计模式,内部模型语义,异常使用,和错误处理。
4.正交:在API设计中,正交性以外这没有方法的副作用,调用设置的特定熟悉的方法属性的方法应该仅改变这个属性,而不改变其他公开访问的属性。
松耦合:
转载于:https://www.cnblogs.com/tianc/p/8783507.html
如何设计API 摘要 《C++API设计》相关推荐
- 视频编辑SDK---我们只提供API,任你自由设计炫酷的功能
面对相对复杂的视频编辑处理技术,你是否束手无策? 在短视频应用中,有一定技术难度的视频编辑技术中,我们提出了一种全新的解决方法:画板和画笔. 短视频处理,用画板和画笔,就够了! 我们设计了极其简单易懂 ...
- Web API核查表:设计、测试、发布API时需思考的43件事
当设计.测试或发布一个新的Web API时,你是在一个原有的复杂系统上构建新的系统.那么至少,你也要建立在HTTP上,而HTTP则是基于TCP/IP创建的.TCP/IP建立在一系列的管道上.当然,你也 ...
- 异步api_如何设计无服务器异步API
异步api by Garrett Vargas 通过Garrett Vargas 如何设计无服务器异步API (How To Design a Serverless Async API) I rece ...
- API接口应该如何设计?
在日常开发中,总会接触到各种接口.前后端数据传输接口,第三方业务平台接口.一个平台的前后端数据传输接口一般都会在内网环境下通信,而且会使用安全框架,所以安全性可以得到很好的保护.这篇文章重点讨论一下提 ...
- 设计糟糕的 RESTful API 就是在浪费时间!
作者 | 帝都羊 责编 | 郭芮 现在微服务真是火的一塌糊涂.大街小巷,逢人必谈微服务,各路大神纷纷忙着把自家的单体服务拆解成多个Web微小服务.而作为微服务之间通信的桥梁,Web API的设计就显得 ...
- 元数据驱动设计 —— 设计一套用于API数据检索的灵活引擎
如果你曾在企业开发方面具有一些经验,那么基本上可以断言,你必定承担过一些类似于搬运工的职责,将数据从你的数据库中不断地搬进搬出.此外,如果你在这方面有过过往的经验,那么你肯定也曾经做过将大量对共享文件 ...
- 深入探索REST(1):如何设计好的RESTful API?
REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...
- 如何设计好的RESTful API?
REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...
- 虚拟研讨会:如何设计好的RESTful API?
http://www.infoq.com/cn/articles/how-to-design-a-good-restful-api/ REST架构风格最初由Roy T. Fielding(HTTP/1 ...
最新文章
- 主从配置_MySQL主从复制配置详解
- Nchain旗下矿池挖出首个BCH区块,“算力战争”真的要来了?
- SAP Spartacus split view控制同屏显示最大视图数的配置
- [JavaWeb-Servlet]Servlet_执行原理
- Maven : 将 Jar 安装到本地仓库和 Jar 上传到私服
- 理论基础 —— 线性表
- mybatis注册映射文件
- react 逆地理 高德地图_给高德新版地图点赞!出行服务竟然如此智能
- STM32固件库详解
- JAVA我的世界怎么弄TNT大陆_《我的世界》爷爷的遗言:TNT大陆地图存档
- 三菱服务器显示003C,FX3U/FX3G系列PLC内置定位功能的当前值寄存器是什么?
- AspCms程序PC端生成静态,手机端动态运行
- vue 抽离公共方法
- 求教lotka-volterra模型在matlab中的仿真模拟
- 取消mysql的salve设置
- CodeForces 805C	Find Amir
- kettle使用 - 开启Carte服务
- ZbxTable 2.0 重磅发布!6大主要优化功能!
- AHB到标准握手时序桥 - 逻辑设计部分
- FC协议功能子模块,实现FC-1553协议,ASM协议,AV协议的应用,多种接口可定制