`

接口API设计的艺术

 
阅读更多

转自:http://www.iteye.com/topic/1128913

 

最近在设计一些基础平台的API,在设计过程中总结了一些经验,记录如下:

 

1、方法参数不要多。

特别是同一种数据类型的方法参数不要过多,一旦过多,调用者容易搞混顺序,搞混了顺序,在编程阶段不会报错,但是在运行时会出错。并且这种错误时不宜排查的。

 

2、如果方法参数超过4个,若超过则适合使用参数类进行封装。

人的记忆一般适合于4个参数左右,参数多了不利于掌握。

 

3、谨慎使用重载,可以使用覆盖。

重载是动态类型的,执行时才会知道到底哪个方法被执行了,覆盖则是静态类型的,一旦调用者的类型确定了,执行哪个方法就确定了。所以重载更容易造成一些你意向不到的Bug。

 

4、方法名称不宜过长,建议使用驼峰式。

在这个快餐时代,简练的东西都像迷你裙一样受欢迎。注意是简练,不是说越短约好,还得让人知道是什么。尽量使用领域内的专业术语。

 

5、方法个数不宜过多。

特别是在同一个类中的方法,容易让使用者不知道使用哪个方法合适,并且不利于维护。如果不是非得需要,不要增加一些你臆想中的方法,方法应该像正交坐标系一样。

 

6、方法签名中参数尽量使用接口,不要使用具体类。

使用接口利于扩展,使用具体类限制了使用的客户端。

 

7、要对输入参数进行校验。

要控制住输入,“用户输入的都是对的”是不靠谱的,如果等到某个关键地方因为参数错误而抛出异常,会造成查bug非常困难,这种校验工作迟早是要还的。

 

8、必要时对于输入的参数进行拷贝。

Java中对数是引用,所以传入的参数很可能在外部被修改的,这种情况下即时通过了校验,也可能会出现问题。所以为了方法的健壮性,请使用拷贝。除非,你认为客户端会注意安全的调用你的方法。注意,非final类的clone方法不一定是可靠的。

 

9、站在使用者角度写写单元测试用例。

使用API是个逆过程,这个逆过程不一定好受。特别是序列化的时候,序列化容易,反序列化不一定容易。

 

10、维护好JavaDoc

都有为开源项目垃圾的JavaDoc吐槽的时候,既然不想遭遇同样的命运,就维护好的JavaDoc。今天还看到Jsoup本次升级中修改了JavaDoc的一个bug。

分享到:
评论

相关推荐

    深度 -API 设计最佳实践的思考.pdf

    总的来说,API设计是一门涉及技术、沟通和组织的综合艺术。优秀的API设计需要对使用者的需求有深入理解,同时兼顾系统的长远发展。遵循上述原则,并结合具体场景进行调整,可以创建出高质量、易于使用的API,促进...

    接口课程设计艺术彩灯模拟系统

    【接口课程设计艺术彩灯模拟系统】是一门深入探讨如何使用编程技术和电子设计技术来创建艺术彩灯模拟系统的课程。这个系统旨在通过编程语言VB(Visual Basic)来控制彩灯,提供了一种互动的视觉体验。VB是一种面向...

    软件框架设计的艺术 Practical API Design 英文PDF原版(吾乐吧提供)

    《软件框架设计的艺术》这本书,英文原版名为"Practical API Design",是关于软件框架设计的宝贵资源,尤其适合那些寻求提升API设计能力和实践的IT专业人士。API(Application Programming Interface)是软件系统间...

    191 - 接口设计之美-通用性接口的组合应用a_android_接口设计_

    在Android开发中,接口设计是构建可扩展、可维护和高效软件架构的关键...理解和掌握接口设计的艺术,对于提升Android开发的专业水平至关重要。通过深入研究和实践,我们可以创造出更加优雅、健壮的Android应用程序。

    浅谈关于JavaScript API设计的一些建议和准则

    JavaScript API设计是软件开发中的一项关键任务,它直接影响到其他开发者使用我们的代码库的便利性和效率。良好的API设计不仅可以简化开发者的使用过程,还可以提升整个应用的用户体验。以下是从给定文件内容中提炼...

    开启MATLAB Web API之门:打造自定义接口的艺术

    ### 开启MATLAB Web API之门:打造自定义接口的艺术 #### 一、引言 随着数据科学和互联网技术的快速发展,MATLAB不仅限于本地的数值计算与数据分析,更进一步扩展到了网络服务领域。通过将MATLAB的功能封装成Web ...

    设计Qt风格的C++API

    Qt风格的API设计遵循一系列原则,旨在提高代码的可读性、可维护性和可重用性。以下是设计Qt风格API的一些关键要点: 1. **最小化与完整性**: - **最小化**:这意味着API应尽可能简洁,避免过多的公开成员和类。这...

    基于Java语言开发的锤子艺术平台-api源码设计

    该艺术平台-api项目采用Java语言进行开发,源码包含659个文件,涵盖478个Java源文件、70个DLL库文件、68个XML配置文件、13个VM文件、5个YML文件、4个BAT...项目专注于艺术领域的服务,为用户提供强大的API接口支持。

    软件框架设计的艺术

    第17章 利用竞赛游戏来提升API设计技巧 300 17.1 概述 300 17.2 第一天 301 17.2.1 非public类带来的问题 304 17.2.2 不可变性带来的问题 304 17.2.3 遗漏实现的问题 308 17.2.4 返回结果可能不...

    API Design for C++

    而C++作为一种广泛应用的编程语言,其API设计更是一门值得深入探讨的艺术。本文将基于给定文件的信息,详细阐述API设计在C++中的关键知识点。 ### API设计原则 API设计的核心在于清晰地表达意图,提供稳定且易于...

    画图器可以画图,设计艺术字

    标题中的“画图器可以画图,设计艺术字”指的是一个软件工具,它允许用户创建图形和设计艺术字体。在IT行业中,这类工具通常被称为图形编辑器或绘图软件。它们利用各种图形技术和算法,为用户提供一个平台来绘制、...

    艺术设计签名微信小程序源码支持微信流量主

    2. **后端接口**:可能包含云函数,用于处理复杂计算、存储用户数据、验证等服务,与前端通过API进行通信。 3. **数据库设计**:可能包括用户信息、签名模板、广告数据等的存储和管理,可能使用腾讯云数据库服务。 ...

    软件框架设计的艺术(中文版).zip

    3. **API设计**:良好的API设计是框架成功的关键。书中将讨论如何创建清晰、一致且易于使用的API,以方便其他开发者进行集成和扩展。 4. **框架的灵活性与可配置性**:框架应该允许用户根据项目需求进行定制。书中...

    《软件框架设计的艺术》

    《软件框架设计的艺术》一书深入探讨了如何构建高效的软件框架,特别强调了接口(interface)的正确使用方法。 #### 关键知识点解析 ##### 1. **框架设计的重要性** - **提升开发效率**:通过预先定义好的结构和...

    c#音乐播放器API

    "c#音乐播放器API"是指使用C#编程语言构建的用于创建音乐播放器的应用程序编程接口(API)。这个API可能包含了播放、暂停、停止、快进、倒退等音乐播放的基本功能,以及音量控制、歌曲列表管理、音频格式支持等高级...

    linux内核设计的艺术 配套实验环境 源码

    学习这些接口的实现,有助于理解Linux API的设计原则。 通过阅读和分析Linux 0.11的源码,不仅可以追溯Linux的发展历程,还能深入理解操作系统内核的设计原理,这对于任何想要从事操作系统或底层开发的工程师来说都...

    计算机程序设计艺术-怕人

    《计算机程序设计艺术》可能涵盖了如何在程序中实现对网卡的控制和通信,例如通过编程接口(API)进行网络数据的发送和接收。此外,书中可能还讨论了错误处理、并发通信、多线程编程,以及如何优化网络性能等实践...

    基于Thinkphp5实现数据信息抓取、基于整理的API接口 + 招聘信息抓取(前程无忧智联招聘boss直聘拉勾网)数据接口 + 新闻分类(头条军事娱乐体

    基于Thinkphp5实现数据信息抓取、基于Thinkphp5 +phpQuery 整理的API接口 + 招聘信息抓取(前程无忧智联招聘boss直聘拉勾网)数据接口 + 新闻分类(头条军事娱乐体育科技艺术教育要闻)数据接口 + 视频分类(精品视频搞笑...

    毕业设计&课设--艺术品网络展示管理系统-毕业设计.zip

    4. **API接口设计**:为了前后端分离,需要设计RESTful API接口,定义清晰的HTTP请求方法和资源路径,遵循JSON格式进行数据交换。 5. **用户认证与授权**:实现用户注册、登录功能,通过session或JWT(JSON Web ...

Global site tag (gtag.js) - Google Analytics