1、好的接口特性
(1)易读
(2)易用,调用简单,清晰明了
(3)功能独立
(4)易于扩展
2、好接口设计的基本原则
- 只做好,并做好一件事。接口定义时,尽量保证接口功能的单一性,不必特别在意接口数量的多少,功能单一的接口便于敏捷开发和调试,容易定位出问题。
- 函数名称清晰,明了,最好能让人一看就知道是做什么的,不恰当的函数名称,往往是不恰当设计的征兆
- 如果没有做到上面两点,就将函数分解只增加,不去删除函数与接口。当你去到一家新的公司,维护一套老的程序代码时尤为重要,此时代码层面来说可能存在冗余,但你却不能轻易的去删除老的代码,因为你可能并不清楚这个接口或者函数被谁在使用了,牵一发动全身。
- 实现永远不能影响接口。
- 最小化访问,尽量使用私有化成员变量,注意信息隐藏,如有必要,可对接口传输内容进行加密和解密处理,如果涉及对外的话,每个接口的定义都需要经过严格的审核。 (安全性方面考虑)
- 注意文档与注释。从个人实际的工作经验来看,开发,尤其是越好的开发,注释往往越少,在大多数公司的项目组,开发文档多数情况可能也没有,因为有文档就意味着需要有人进行维护,意味着需要有人进行投入,很少有公司可以做得非常规范的。但从效果来看,写好规范的注释和详细的设计文档是非常有好处的。
(
-便于人员交接 - 便于走读代码- 便于对业务理解 - 便于后续重新推敲优化代码
)
- 提高接口性能,不同的开发,实现用一个功能的代码可能相差十万八千里,与之而来的代码质量和性能也就可能存在较大的差异,要实现高性能的接口,除了开发自身不断提高技能,在一个项目团队中,开发前多讲方案进行评审是一个很好的办法。
- 平台无关,我作为一名JAVA工程师,因为Java本身就对平台没有依赖,Linux可以,Windows可以,这点是很好理解的。
3、好接口实现的基本原则
- 不要到处拷贝代码,比如接口的注释就很容易在拷贝过程中,把错误的信息拷贝过来。
- 原子性尽量在一个接口内保证(可以参照事务的原子性,相关的操作要么都成功,要么都失败,对于接口内的业务操作也是如此,代码上对于出现异常情况后的判断处理需做到严谨)
- Fail-Fast原则,出错尽量早点返回,交给上层处理,不要勉强抢救。(这个是基本原则,实际项目中,有时可能因为业务需要,虽判断出现了错误,但程序代码仍需要继续往下执行,不阻塞流程往下跑)
- 避免数据直接访问,而是提供访问方法
- 注意参数和返回值类型(接口中交互一般使用JSON进行处理;返回类型中尽量避免使用8种基本类型,最好用对象返回;另外接口参数的类型最好定义为Final【
接口中的变量是当作常量来设计的,它不但是final,而且还是public static的,也即interface中的变量一定是public static final的,换言之,这个变量实际上已经是个“常量”。
原因如下:1. 接口中的数据对所有实现类只有一份,所以是static 2.要使实现类为了向上转型成功,所以必须是final的.
】)