`

优秀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条规则,以及要使用自然抽象。



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

相关推荐

    java API设计

    1. **设计原则**:遵循SOLID原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则),这有助于创建稳定、可复用的API。此外,还包括DRY(Don't Repeat Yourself)原则,避免重复代码。 2. **...

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

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

    C++ API设计.pdf

    C++ API设计.pdf

    API 接口 设计文档 模板

    ### API接口设计文档模板知识点详解 #### 一、概述 API(Application Programming Interface...通过这些知识点的学习,开发者可以更好地理解和掌握API接口的设计原则和技术细节,为后续的实际开发工作打下坚实的基础。

    Google首席工程师Joshua Bloch谈如何设计优秀的API

    在软件开发领域,API(应用程序...通过深入理解并应用这些原则,我们可以设计出更高效、易用和可靠的API,从而提升整个软件项目的质量。 Joshua Bloch的见解对于任何希望提升API设计水平的开发者来说都是宝贵的指导。

    API 设计原理(Qt)

    Qt作为一款成熟且广泛使用的跨平台应用开发框架,其API设计原则不仅适用于Qt本身,对于其他领域的API设计也有着重要的参考价值。通过遵循这些原则和流程,我们可以创建出既高效又易于使用的API,从而提升开发者的...

    visual Basic 6.0 win32 API程序设计(pdf格式)

    **Visual Basic 6.0 Win32 API程序设计** Visual Basic 6.0(VB6)是Microsoft开发的一种可视化编程环境,它允许开发者快速构建Windows应用程序。尽管现在Visual Basic已经发展到更新的版本,但VB6依然在许多企业中...

    微服务API设计的实践与思考总结.docx

    5. API设计原则: - **简单**:遵循单一职责原则,每个API应专注于执行一项特定任务。通过识别接口之间的关联性和边界,可以有效地划分接口,如按业务主体分类,分离查询与修改接口。 - **专注**:API设计应专注于...

    How to Design a Good API

    描述部分提到了在NetBeans架构下进行API设计,强调了设计优秀API的重要性。这表明文章将不会是泛泛而谈,而是会结合NetBeans平台独有的环境和工具来具体说明API设计的要点。NetBeans作为一个集成开发环境(IDE),其...

    C#中的RESTful API设计与实现

    本文将详细介绍如何在C#中设计和实现RESTful API,包括关键概念、设计原则、以及实际编码示例。 RESTful API在现代Web开发中扮演着核心角色。通过遵循REST原则和最佳实践,你可以设计和实现强大、灵活且易于维护的...

    Kubernetes API稳定性技术架构设计.docx

    - **API**:Kubernetes API 遵循 RESTful 设计原则,使用 HTTP 协议,支持 JSON 和 Protobuf 作为数据序列化格式。API Server 是 Kubernetes 的核心组件,负责处理所有的 API 请求,并与 Etcd 进行数据同步。 1. *...

    QQ API设计说明书(开发QQ第三方程序必备)

    QQ API设计说明书(开发QQ第三方程序必备) 一、引言 3 1.1 编写目的 3 1.2 更新时间 3 二、总体设计 3 三、注册的系统消息 3 3.1 WM_QQAPI_REGISTER 3 3.2 WM_QQAPI_REGISTER_RESP 4 3.3 WM_QQAPI_AVAILABLE 4 四、...

    出色的JavaScriptAPI设计秘诀共3页.pdf.zip

    JavaScript API(应用程序编程接口)是开发...优秀的JavaScript API设计是一个综合考虑可读性、易用性、可维护性和性能的过程。通过遵循上述原则,开发者可以创建出更强大且易于使用的工具,促进软件开发的高效进行。

    REST API 安全设计指南.pdf

    REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出 提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构设计。 目前在三种主流...

    Web API的设计与开发 阅读计划-雨帆1

    2.2 节详细解释了 API 端点设计的原则,如短小、易读、易改、不暴露服务器架构等,这些原则旨在提高 API 的用户体验和可维护性。2.3 节探讨了 HTTP 方法的使用,如 GET、POST、PUT、DELETE 等,以及它们在 API 设计...

    API查询API查询API查询API查询

    在这个主题下,我们将深入探讨API的基本概念、类型、设计原则以及查询方法。 API是软件开发的核心组成部分,它们为开发者提供了一种标准化的方式,以便于访问特定服务的功能,而无需理解底层实现的复杂性。API通常...

    API design matters

    然而,设计优秀的API并非易事,这需要深入理解API设计的原则与最佳实践。本文将根据给定的信息探讨API设计的重要性及其挑战。 #### 一、API设计的意义 API作为软件系统中的纽带,其设计的好坏直接影响到整个系统的...

    JAVA_API1.6文档(中文)

    java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java....

    PowerBuilder Win32 API程序设计:基础卷 pdf

    PowerBuilder Win32 API程序设计:基础卷 pdf

Global site tag (gtag.js) - Google Analytics