如何设计好的接口(Google分享)

简介: 本文源自Google工程师joshua bloch的经验分享,楼主进行了整理和总结。

image.png

本文源自Google工程师joshua bloch的经验分享,楼主进行了整理和总结。

一、好接口的特性

(1)易学

(2)易用,甚至不需要文档

(3)难于误用

(4)容易阅读与维护

(5)容易扩展

二、接口设计实现的过程

(1)分析需求

考虑是否有更佳解决方案?

这是否使我们这真想要的需求?

(2)设计小接口

这个阶段,快速敏捷迭代

小接口易于修改

小接口的实现给人自信,减少挫败感

(3)高频、提早撰写接口

实现自测用例

(4)撰写服务提供接口(SPI:service provider interface)尤为重要

如果提供一个接口,是否就不支持第二个?

如果提供两个接口,是否能够扩展,融合?

如果提供三个接口,是否足够?能否工作正常?

(5)注意“正常的”异常维护

你的接口是为了满足所有需求?

即使有异常,也不要紧

三、接口设计的基本原则

(1)只做并做好一件事

函数名自解释;

不恰当的函数名,往往是不恰当设计的征兆

(2)如果没做到(1),就将函数分解

只增加,永远不要删除函数与接口

你永远不知道这个接口被谁在使用

(3)实现永远不能影响接口

举例:不能假定函数调用者只能使用hash

不能对外暴露实现细节

(4)最小化访问

尽量使用私有化成员

注意信息隐藏

(5)文档与注释

接口不是只写给自己(即使只给自己,也应该有说明)

(6)提高性能

(7)平台无关

四、类设计

(1)最小易变性

举例:Date不宜设计成类,过于易变;可设计为TimerTask

如果可变,则要设计良好、最小化的状态子集合

(2)尽量少用继承

如果设计一个类不能被继承,则应该明确禁止

五、方法设计

(1)不要到处拷贝模板代码

模块能做的事,不用到处拷贝方法

(2)原子性应该在一个方法内保证

(3)Fail-Fast设计原则

出错尽量早点返回,交给上层处理,不要勉强抢救

(4)避免数据直接访问,而是提供访问方法

(5)谨慎重载

小心多重继承中的误重载

可以重载的情况,也慎重考虑是否应该重载

(6)注意参数与返回值类型

尽量明确类型

能不用string尽量不用

使用float的地方尽量用double,64bit

(7)不改变的参数使用const

(8)参数个数不宜太多

如果过多,就要考虑接口的合理性了

(9)避免返回值与异常的同时返回

目录
相关文章
|
1月前
|
人工智能 Java API
Google Gemini API 接口调用方法
Google 最近发布的 Gemini 1.0 AI 模型通过其升级版,Gemini,标志着公司迄今为止最为强大和多功能的人工智能技术的突破。
|
5天前
|
XML JSON API
深入了解API:详解应用程序接口的作用和原理
在现代软件开发领域中,API(Application Programming Interface,应用程序接口)扮演着至关重要的角色。无论是在Web开发、移动应用还是大型软件系统中,API都是不可或缺的组成部分。本文将深入探讨API的作用和原理,帮助读者更好地理解和应用API
|
3月前
|
XML JSON API
浅谈6种流行的API架构风格
浅谈6种流行的API架构风格
|
6月前
|
存储 API
如何使用 SAP UI5 V2 ODataModel 模型 API 实现 deepCreate 的场景以及局限性
如何使用 SAP UI5 V2 ODataModel 模型 API 实现 deepCreate 的场景以及局限性
44 0
|
10月前
|
存储 数据可视化 数据挖掘
"探索API:解析应用程序接口的作用、功能和应用场景"
随着互联网技术的不断发展,API(Application Programming Interface)已经成为了连接不同应用程序之间的重要工具,API不仅可以帮助开发者更加容易地创建应用程序,同时还能提供更多的数据和功能,丰富了应用程序的体验和用户的使用感受。在本文中,我们将探讨API的作用、功能和应用场景。
79 0
|
10月前
|
供应链 API 数据安全/隐私保护
电商API的好处和特性
随着电商的蓬勃发展,现在已经进入了全民电商的时代;从国内电商到跨境电商,可以说是百家争艳,同时,电商运营也变得更精细化,各种运营工具也相继涌现,为店铺业绩做保障,电商API就是这样一个工具。
|
网络协议 Dubbo 应用服务中间件
【Eolink Apikit】API 接口主流协议解析
API 接口协议制定了接口信息的传递标准规范,不同的接口协议对接口管理工具来说都会拥有不同的底层功能逻辑。所以接口管理工具很难在短时间内完善的新增一种协议的文档管理和接口调试。 解密:目前市场上支持主流协议最全面的产品
172 0
【Eolink Apikit】API 接口主流协议解析
|
JSON Oracle 安全
推荐腾讯开源的零代码、全功能、强安全API架构
APIJSON 是一种专为 API 而生的 JSON 网络传输协议 以及 基于这套协议实现的 ORM 库。
473 0
推荐腾讯开源的零代码、全功能、强安全API架构
|
SQL Oracle 关系型数据库
接口大师v3.13更新:支持一键导入swagger,即刻开放内部API接口
接口大师v3.13更新:支持一键导入swagger,即刻开放内部API接口
【Google Play】Google Play 开放式测试 ( 简介 | 发布开放式测试版本 )(一)
【Google Play】Google Play 开放式测试 ( 简介 | 发布开放式测试版本 )(一)
502 0
【Google Play】Google Play 开放式测试 ( 简介 | 发布开放式测试版本 )(一)