每个软件开发人员都使用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条规则,以及要使用自然抽象。
欢迎大家说说自己的看法。
分享到:
相关推荐
1. **设计原则**:遵循SOLID原则(单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则),这有助于创建稳定、可复用的API。此外,还包括DRY(Don't Repeat Yourself)原则,避免重复代码。 2. **...
《C++ API设计》探索了常常被忽视的技术性和非技术性问题,有助于推动成功的设计决策,从而产生高质量的、健壮的而且可以长期使用的API。” ——Eric Gregory,Pixar动画工作室软件架构师 “《C++ API设计》面向中...
C++ API设计.pdf
### API接口设计文档模板知识点详解 #### 一、概述 API(Application Programming Interface...通过这些知识点的学习,开发者可以更好地理解和掌握API接口的设计原则和技术细节,为后续的实际开发工作打下坚实的基础。
在软件开发领域,API(应用程序...通过深入理解并应用这些原则,我们可以设计出更高效、易用和可靠的API,从而提升整个软件项目的质量。 Joshua Bloch的见解对于任何希望提升API设计水平的开发者来说都是宝贵的指导。
Qt作为一款成熟且广泛使用的跨平台应用开发框架,其API设计原则不仅适用于Qt本身,对于其他领域的API设计也有着重要的参考价值。通过遵循这些原则和流程,我们可以创建出既高效又易于使用的API,从而提升开发者的...
**Visual Basic 6.0 Win32 API程序设计** Visual Basic 6.0(VB6)是Microsoft开发的一种可视化编程环境,它允许开发者快速构建Windows应用程序。尽管现在Visual Basic已经发展到更新的版本,但VB6依然在许多企业中...
5. API设计原则: - **简单**:遵循单一职责原则,每个API应专注于执行一项特定任务。通过识别接口之间的关联性和边界,可以有效地划分接口,如按业务主体分类,分离查询与修改接口。 - **专注**:API设计应专注于...
描述部分提到了在NetBeans架构下进行API设计,强调了设计优秀API的重要性。这表明文章将不会是泛泛而谈,而是会结合NetBeans平台独有的环境和工具来具体说明API设计的要点。NetBeans作为一个集成开发环境(IDE),其...
本文将详细介绍如何在C#中设计和实现RESTful API,包括关键概念、设计原则、以及实际编码示例。 RESTful API在现代Web开发中扮演着核心角色。通过遵循REST原则和最佳实践,你可以设计和实现强大、灵活且易于维护的...
- **API**:Kubernetes API 遵循 RESTful 设计原则,使用 HTTP 协议,支持 JSON 和 Protobuf 作为数据序列化格式。API Server 是 Kubernetes 的核心组件,负责处理所有的 API 请求,并与 Etcd 进行数据同步。 1. *...
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 四、...
JavaScript API(应用程序编程接口)是开发...优秀的JavaScript API设计是一个综合考虑可读性、易用性、可维护性和性能的过程。通过遵循上述原则,开发者可以创建出更强大且易于使用的工具,促进软件开发的高效进行。
REST API 安全设计指南。REST的全称是REpresentational State Transfer,它利用传统Web特点,提出 提出一个既适于客户端应用又适于服务端的应用的、统一架构,极大程度上统一及简化了网站架构设计。 目前在三种主流...
2.2 节详细解释了 API 端点设计的原则,如短小、易读、易改、不暴露服务器架构等,这些原则旨在提高 API 的用户体验和可维护性。2.3 节探讨了 HTTP 方法的使用,如 GET、POST、PUT、DELETE 等,以及它们在 API 设计...
在这个主题下,我们将深入探讨API的基本概念、类型、设计原则以及查询方法。 API是软件开发的核心组成部分,它们为开发者提供了一种标准化的方式,以便于访问特定服务的功能,而无需理解底层实现的复杂性。API通常...
然而,设计优秀的API并非易事,这需要深入理解API设计的原则与最佳实践。本文将根据给定的信息探讨API设计的重要性及其挑战。 #### 一、API设计的意义 API作为软件系统中的纽带,其设计的好坏直接影响到整个系统的...
java.lang 提供利用 Java 编程语言进行程序设计的基础类。 java.lang.annotation 为 Java 编程语言注释设施提供库支持。 java.lang.instrument 提供允许 Java 编程语言代理检测运行在 JVM 上的程序的服务。 java....
PowerBuilder Win32 API程序设计:基础卷 pdf