`
JerryWang_SAP
  • 浏览: 1030242 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

来自Google资深工程师的API设计最佳实践

阅读更多

来自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的原创文章,请关注公众号"汪子熙":

 
0
0
分享到:
评论

相关推荐

    完美API good API - keynote

    演讲者是谷歌的资深软件工程师Joshua Bloch,他通过这场演讲分享了关于如何设计一个好的API以及为什么API设计重要的知识。 在讨论API设计的重要性时,Joshua Bloch提出了几点关键的理由: 1. API可能是一个公司最...

    《HBASE系统运维实践》淘宝资深数据库工程师许飞飞

    淘宝资深数据库工程师许飞飞撰写的《HBASE系统运维实践》一书,深入浅出地介绍了HBase在实际工作中的应用以及运维实践。本书是数据库运维领域的重要参考书籍,尤其对使用HBase的企业和个人开发者有着较高的指导价值...

    那些丑陋的Java API

    文件名“Java The Good Parts.pdf”表明可能与《Java The Good Parts》这本书有关,该书由Google的资深工程师Bill Venners合著,书中详细讨论了Java语言的精华部分,同时也批判了一些不那么理想的设计。这可能意味着...

    安兴华的演讲材料

    主讲人安兴华是 Google 公司资深工程师,长期从事 Geo API和本地搜索相关的应用开发工作。安兴华毕业于清华大学,在美国南加州大学获得硕士学位。 演讲将用示例讲解的方式,为听众展示如何利用 Google Geo API在...

    杨骏的演讲材料

    Google Data API(Workshop A) <br>主讲人:杨骏 主讲人杨骏是 Google 公司资深工程师,长期从事 Google Data API 和相关应用产品的研发工作。加入 Google 前,他在美国硅谷有多年的软件产品研发经验。 ...

    30627-Android开发工程师案例教程(第2版)-倪红军-代码

    《30627-Android开发工程师案例教程(第2版)-倪红军-代码》是一本专注于Android应用开发实践的教程,由资深Android开发者倪红军编写。此资源包含了与教程配套的源码,旨在帮助读者通过实际操作来加深对Android开发...

    android-sdk-api-4.0

    从哈飞工业集团物资编码系统到荆门电力网站后台管理系统,再到广西电信的彩铃网关和ISMP系统项目,钟波展现出了从初学者到资深工程师的成长轨迹,以及在不同领域和环境下解决问题的能力。 综上所述,钟波不仅是一位...

    linux API最新最详细的讲解.pdf

    多位来自Google、Novell等知名企业的工程师和专家给予了高度评价,认为这本书是他们编写软件时不可或缺的重要参考资源之一。他们提到,无论是新手还是资深开发者,在阅读本书后都能够有所收获,并且书中详实的例子和...

    SNS驴友系统

    无论是对Android开发感兴趣的新手,还是寻求提升技术深度的资深工程师,都能在这个项目中找到丰富的学习素材。 首先,我们来看看"服务器端"部分。服务器端是任何网络应用的基础,负责处理客户端发送的请求,存储和...

    Programming Google App Engine with Java-2015年英文原版,0积分

    Dan Sanderson是一位资深软件工程师,在Google任职。他拥有超过十五年的Web行业经验,曾在Google、Amazon等公司担任软件工程师和技术作家。凭借丰富的实践经验和技术积累,Dan为读者提供了深入浅出的讲解。 #### 三...

    Beginning Google Web Toolkit From Novice to Professional

    - **Bram Smeets**:资深软件开发工程师,在Java和GWT领域有着丰富的经验。 - **Uri Boness**:具有多年软件开发背景的专业人士,对GWT有着深入的理解。 - **Roald Bankras**:技术作家及顾问,专注于Web应用开发和...

    安卓培训讲述

    本培训资料是由资深企业安卓开发工程师提供的,涵盖了成为一名专业安卓开发人员所需掌握的关键技能和知识。 首先,安卓开发的基础部分通常包括Java或Kotlin编程语言的学习。Java作为早期安卓开发的主要语言,其面向...

    tensorflow PPT和源码

    Jeff Dean是Google的资深工程师,他在大规模分布式系统和人工智能领域有着深厚的研究,因此他的讲解通常具有很高的权威性。这份PPT可能涵盖了TensorFlow的安装配置、数据处理、模型构建、训练优化等关键部分,对初学...

    某在线数字广告制作投放平台融资计划书.docx

    其团队由来自Facebook、Cisco、微软亚研、光线等公司的资深专业人士组成,超过一半为海归人才。 喝彩网的核心产品包括Bravo在线数字广告制作投放平台、互动广告一体机投放系统以及交互设计社区。其中,Bravo AD ...

    JavaServer Faces 2.0, The Complete Reference-focus.pdf

    《JavaServer Faces 2.0:完整的参考指南》是一本深度解析JavaServer Faces(JSF)2.0技术的权威著作,由资深工程师Ed Burns、Chris Schalk以及贡献作者Neil Griffin共同编著。本书旨在为读者提供全面而深入的JSF ...

    Java Server Faces2.0指南英文版

    《JavaServer Faces 2.0:全面指南》是由资深工程师 Ed Burns 和 Chris Schalk 合著的一本权威性参考书籍,并由 Neil Griffin 参与贡献。本书旨在为开发者提供关于 JavaServer Faces 2.0 的完整指南,涵盖了该技术的...

Global site tag (gtag.js) - Google Analytics