指南:接口
主题
- 命名接口,以反映它在系统中担当的角色。
- 名称应简短,1 到 2 个单词。
- 名称中不要包含单词“interface”,因为它已暗指模型元素的类型(例如 interface)
- 描述应表达接口的职责。
- 描述的长度应是几句话,最长可为一小段。
- 描述不应只是重述一遍接口的名称,而应说明接口在系统中担当的角色。
- 操作名称应反映操作的结果。
- 当操作设置或获取信息时,在操作的名称中包含 set 或 get 就属于多余了。
应对操作和正被设置或检索的模型元素的属性赋予相同的名称。这样命名的操作,如果不带参数,则检索属性;这样命名的操作,如果带参数,则设置属性。
示例
name() 返回对象的名称;name(aString) 将对象的名称设置为 aString。
- 操作的描述应描述操作做什么,包括任何主要算法以及它返回什么值。
- 操作参数的命名应指示正将何种信息传递给操作。
- 标识参数的类型。
由接口定义的行为被指定为一组操作。可能需要传达其它信息:
- 如何使用操作,以及这些操作的执行顺序(用示例序列图说明)。
- 实现该接口的模型元素可能处在的、外部可观察到的可能状态(由状态机说明,请参阅指南:状态表图)。
- 测试计划和脚本,它们测试任何实现该接口的模型元素的行为。
为了分组和管理这些信息,应创建一个包,来包含该接口和所有相关工件。
每个接口代表系统中的一条“接缝”:系统可以在该处“分开”并重新构建或重新设计。接口代表了规范与设计或实施的分离。
构造良好的接口应:
- 简单却又完整,提供所有必要的操作,却又足以指定单项服务
- 可理解,提供的信息足以使用和实现接口,而不必检查现有用法或实施
- 易使用,提供信息以指导用户利用接口的主要属性,而不需要深入了解操作的细节
当您绘制接口时,
- 在您只需指定系统中存在缝时,使用“棒棒糖”表示法。最常见的情况是,您需要将此用于子系统而不是用于类。
- 在您需要表示服务本身的详细信息时,使用扩展的“类”表示法。最常见的情况是,您需要将此用于指定包或子系统提供的服务。
|