如何设计接口原则?

如何设计接口?

众所周知,接口是提供给其他模块或者系统使用的一种约定或者规范。因此接口必须要保
证足够的稳定性和易用性。这是设计接口的基本要求。

1.稳定性

接口必须相对稳定,否则将导致接口的使用者和提供者为了适应新接口而不断修改接口
的实现,可能重复进行无用功,严重时影响整个软件开发进度。那么如何保证设计的接口相
对稳定呢?
    首先,接口的语义必须明确。包括接口调用方法、接口名称、参数的类型和名称。抽象
的接口名称或者参数名称使人困惑或者理解错误。如下例:
    History::SetAttribute
    设置历史记录的属性,初看不知道该接口要做什么。除非History的属性很多否则没有
必要设计这样的接口。
    ioctl
    C库中的ioctl,其实很难用原因是需要设置项太多,每个项的参数又不太一致,接口使
用者的压力就较大了。但是接口设计者也是不得已而为之,由于IO的设置接口的应用情况较
多,如果每个设置接口都单独提供一个接口则会导致非常多的接口,另外就是保证接口的相
对稳定,采用抽象的数据的接口便于移植和稳定。
    因此,明确的接口语义例外情况就是就是对于辅助功能,如果需要较多接口,则可以合
成一个接口,采用不同参数区分(如windows中的窗口处理过程类型的定义也是这种情况)。
    其次,采用版本定义来区分接口的差异。比如提供接口版本查询功能,接口实现着提供
接口版本的查询功能。

2.易用性

接口是提供给第三方使用的,较难用的接口会导致接口使用者的抱怨。
    如:
        SetCookie(void* handle, const CookieParam& param);
        GetCookie(void* handle, CookieParam& param);
    此接口名称的意义还是比较明确的,但是参数CookieParam过于抽象,将导致接口的调用
者在使用接口时,需要将基本数据类型的值组成一个CookieParam类型,然后才能调用接口。
这是一种糟糕的接口设计。既不便于使用又不便于编译器优化(待确认)。
    如果该为下面的接口则较容易使用
        SetCookie(void* handle, const URL& url, const String& cookie);
        GetCookie(void* handle, const URL& url, String cookie);
    除非接口的参数个数超过5个,否则最好采用基本数据类型作为参数。超过5个参数的函数
一方面给调用者带来困难,参数排列组合的情况过多,另一方面就是不利于编译器优化时采用
寄存器传递参数。

3.如何设计接口?

采用OOD思想,即面向对象的思想,提供类接口或者COM接口。
    对于C函数接口如何设计呢?其实和C++接口设计原则一样,也采用面向对象的思想,只是
将类设计成结构,公共的成员函数变为全局的函数,私有的成员函数变为static函数即可。
函数接口的第一参数就相当于C++中的this指针即可。

4.接口设计的其他要求

* 规范性:主要是接口设计的代码规范,这是最基本的要求。同时考虑C接口命名污染的
              问题。一般C接口都会在接口前加上公司或者模块的标识。
    * 可移植性:对于需要在多平台实现的接口需要考虑接口本身的可移植性,因此最少使用
                对于系统依赖的类型作为接口的参数类型或者返回值类型。
    * 鲁棒性:接口需要有适度的鲁棒性,主要是指能够在多种情况下接口都能实现统一的效
              果,不会随着调用者传入的参数的变化而导致接口的输出出现违背接口语义的
              情况出现。
    * 安全性:接口定义时需要严格限制参数的读写权限,如果只能是只读的参数一定要设置
              成const,以免出现非法使用。
    * 兼容性:这是接口扩充的原则,必须保证同一个接口实现后向兼容前一版本的使用。扩
              充的同类接口也能兼容老接口的实现。

5.如何扩展接口

1.采用版本特性,不同版本的接口实现可以允许有差异,但是提供版本查询功能;
    2.序号表示新增的接口,如SetCookie、SetCookie1、SetCookie2

来源Q币软件资源网:http://blog.sina.com.cn/hksqbi

如何设计接口原则?

时间: 2024-12-11 07:43:04

如何设计接口原则?的相关文章

怎样设计接口?

怎样设计接口? 众所周知,接口是提供给其它模块或者系统使用的一种约定或者规范.因此接口必需要保证足够的稳定性和易用性.这是设计接口的基本要求. 1.稳定性 接口必须相对稳定,否则将导致接口的使用者和提供者为了适应新接口而不断改动接口的实现,可能反复进行无用功,严重时影响整个软件开发进度.那么怎样保证设计的接口相对稳定呢?    首先,接口的语义必须明白.包含接口调用方法.接口名称.參数的类型和名称.抽象的接口名称或者參数名称使人困惑或者理解错误.例如以下例:    History::SetAtt

OO设计原则 -- OO设计的原则及设计过程的全面总结

这部分增加一点自己的感想,OO设计原则下面讲述的很清晰;看完之后有点感想如果我们在实际开发当中能够把这些原则熟烂于心的话那我们的代码质量和个人能力会有很显著的提神.根据自己的实际经验看很多开发者在开发过程中很多基本的知识确实没有熟烂于心导致开发的时候只有基本的内容.我所在的项目就是代码接口各种乱,可读性和可维护性特别差:当然自己在开发的时候也都没有做到,在后面的工作中尽量避免 前面发表了5篇OO设计原则的文章,在这里我将这个5个原则如何在我们设计过程进行应用进行一下总结, 这是我通过阅读和学习很

软件设计的原则

Don't Repeat Yourself (DRY) DRY 是一个最简单的法则,也是最容易被理解的.但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事).它意味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些合适的参数调用这个新的方法. 参考:http://en.wikipedia.org/wiki/KISS_principle Program to a

如何设计接口测试用例

接口测试是项目测试的一部分,正如其名,它测试的主要对象是接口,是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点.测试的重点是检查数据交互.传递.和控制管理过程以及系统间的相互依赖关系等. 如何设计接口测试用例? 首先,明确出发点.和所有的测试一样,接口测试出发点是你要证明所测的程序是错误的.以这个出发点为导向,你的设计行为就会尽量朝这个方向发展,更易发现问题,不会出现大方向的偏差. 其次,选择好测试对象.对于一个系统做接口测试选择好的测试对象是

设计指导原则

设计指导原则 一. 性能相关: 避免在循环内部new一些没有必要每次都new的对象. 所有与IO相关的操作,都需要考虑性能问题,一般采取的措施是连接池,缓存,减少调用次数,合并请求. 每个业务都要分析整个请求链路,找到瓶颈,通过压测的方式确认问题及验证解决方案. 根据业务情况,使用异步化和最终一致性. CPU,内存,网络IO,磁盘IO这些瓶颈,需要知道在合适的场景牺牲什么换取什么.通俗的讲是空间换时间,还是时间换空间.不同业务场景下,要做合理的取舍.例如多线程并发查询后merge.这个就是利用C

《设计模式之禅》笔记整理--面对对象设计六大原则

第一章.面对对象设计六大原则: (1).单一职责原则:应该有且只有一个原因引起类的变更. 为什么要用单一职责原则:(1).类的复杂性降低,实现什么职责都有清晰明确的定义. (2).可读性提高,复杂性降低,当然可读性提高了. (3).可维护性提高,可读性提高,当然更容易维护了. (4).变更引起的风险降低,一个接口修改,只对相应的实现类有影响. 职责划分的例子:电话过程可以划分为两个职责:(1).协议管理(2).数据传送 :RBAC模型,基于角色的访问控制 (2).里氏替换原则:目的:增强程序的健

App架构设计:接口的设计

安全机制的设计 现在,大部分App的接口都采用RESTful架构,RESTFul最重要的一个设计原则就是,客户端与服务器的交互在请求之间是无状态的,也就是说,当涉及到用户状态时,每次请求都要带上身份验证信息.实现上,大部分都采用token的认证方式,一般流程是: 用户用密码登录成功后,服务器返回token给客户端: 客户端将token保存在本地,发起后续的相关请求时,将token发回给服务器: 服务器检查token的有效性,有效则返回数据,若无效,分两种情况: token错误,这时需要用户重新登

一些软件设计的原则_转

转自:酷壳 coolshell https://coolshell.cn/articles/4535.html   陈皓 以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫和Unix传奇(下篇)中所以说的UNIX的设计原则.相信大家从中能够从中学了解到一些设计原理方面的知识,正如我在<再谈"我是怎么招聘程序">中所说的,一个好的程序员通常由其操作技能.知识水平,经验层力和能力四个方面组成.在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识.

如何简单设计接口测试用例

接口测试是项目测试的一部分,它测试的主要对象是接口 ,是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与所测系统之间以及内部各系统之间的交互点.测试的重点是检查数据交互.传递.和控制管理过程以及系统间的相互依赖关系等. 如何设计接口测试用例?首先,明确出发点,和所有的测试一样 ,接口测试出发点是你要证明所测的程序是错误的.以这个出发点为导向,你的设计行为就会尽量朝这个方向,更易发现问题 其次,选择好测试对象.对于一个系统做接口测试选择好的测试对象是接口测试关键.一个系统有无数的接口