博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
来自Google资深工程师的API设计最佳实践
阅读量:6245 次
发布时间:2019-06-22

本文共 818 字,大约阅读时间需要 2 分钟。

hot3.png

来自Google资深工程师Joshua Bloch的分享:API设计最佳实践

为什么API设计如此重要?API是一个公司最重要的资产。

为什么API的设计对程序员如此重要?

API一旦发布,出于兼容性考虑,不能轻易地随心所欲进行修改,比如删除参数。

从API的上帝 - 设计者的视角出发,有助于提高代码质量。

一个优秀的API应该满足下列标准:

易学易用,甚至是自描述的,不需文档也能让新手快速上手。不易造成误解。后续维护者易于理解,满足开闭原则 - 能够很容易进行扩展。

如何设计一个好的API

首先应该从收集需求出发。注意结合API实现的复杂度一起考虑。

作为第一步,首先给出需求规格文档,一页即可:

别指望你的API能让所有人满意。也不要指望发布后,它不会出任何错误——那是不可能的。

API也应该遵循单一职责:如果你发觉很难根据你的API实现的功能给它取个合适的名字,这是一个不好的信号,很多时候说明你的API里面做了太多事情——试着把它们拆成多个API。

信息封装 - 公有类尽量避免暴露公有字段出去,最大化信息隐藏

API命名艺术 - API的名称也是一门语言。

API和文档的关系

合理使用继承和子类,不要滥用里氏替换原则

采用fail fast 策略,尽可能早地抛出错误消息:

API的数据都应该允许使用者通过字符串的方式访问

慎用重载

选用合适的API参数和返回类型

API里的参数顺序也很有讲究

避免冗长的参数列表,参数如果超过3个,使用者就需要通过阅读文档才能消费了。

尽量返回不需要调用者进行异常处理的参数,比如空数组或集合,而不是null

API设计里的和异常处理相关的最佳实践

API重构的最佳实践

API设计和Thread-local相关的最佳实践

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

转载于:https://my.oschina.net/u/3771578/blog/3006967

你可能感兴趣的文章
ReactiveCocoa RACDelegateProxy
查看>>
网站架构案例精解
查看>>
iOS提示框,为什么你应该使用 MBProgressHUD?
查看>>
思科GLC-T、GLC-TE与SFP-GE-T电模块的区别
查看>>
Spring AOP 的 afterReturing 为什么不能改变返回值
查看>>
在Oracle RAC环境下创建数据库时提示不能验证ASMSNMP密码问题的解决(ORA-01017)
查看>>
集中管理:领导者,不能不考虑的几件事之—— 多维管理视角,一个都不能少...
查看>>
解决Jquery load()加载GB2312页面时出现乱码的两种方案
查看>>
js数组转json并在后台对其解析具体实现
查看>>
avformat_open_input() always return -13
查看>>
linux 编写防火墙脚本
查看>>
方差分析库 ANOVA C++ (libANOVA)
查看>>
线程,进程和程序的简单比较
查看>>
Resetting warning light on AIX
查看>>
Java 实现文件随机读写-RandomAccessFile
查看>>
hdu2027 统计元音
查看>>
星巴克——最单纯的SNS应用
查看>>
spring配置线程池
查看>>
2016年2月5、6日:调研应用监控系统
查看>>
在eclipse中搭建咖啡兔的Activiti演示工程中的各种坑及其解决方法(kft-activiti-demo-no-maven)...
查看>>