面向对象语言实现可重用要遵循的原则
软件重用分为采用可重用部件和开发可重用部件两种,前者属于领域工程的范畴,后者属于软件工程的范畴,两者共同组成基于构件的软件工程(component based software engineering,CBSE)。
对于使用面向对象语言开发的软件来说,开发的可重用部件主要是类库。而可重用的类库开发要遵循以下原则:
提高方法的内聚
设计可重用的类时,应尽可能使类的方法内聚。要使方法内聚,就应该遵循一个方法(即服务)只完成一个功能的原则。如果一个方法涉及多个功能,则应该把它分解成功能独立的几个小的方法。
减小方法的规模
设计可重用的类时,应尽可能减小方法的规模。
保持方法的一致性
设计可重用的类时,应尽可能保持方法的一致性。保持一致性包括一致的方法名、参数个数、参数类型和次序、返回值类型、使用条件、出错条件等。
把策略与实现分开
设计可重用的类时,应把策略方法和实现方法分开。
策略方法是指负责做出决策,提供变量,并且管理全局的方法。它用于检查系统运行状态,并处理出错情况。
实现方法负责则是只负责完成具体的操作的方法。它针对具体数据完成特定处理,通常用于实现复杂的算法。
把策略方法和实现方法分开,有利于提高可重用性。
全面覆盖
设计可重用的类时,应尽可能针对属性的各种可能出现的组合来定义方法。而且,一个方法不仅能处理正常值,还要对空值、极限值及界外值等异常情况做出响应。
尽量不使用全局信息
设计可重用的类时,应尽量不使用全局信息,以降低方法与外界的耦合程度。
利用继承机制
设计可重用的类时,应多使用继承机制。通过继承可在一个现有类的基础上建立新类。被继承的类称为基类,在基类上建立的新类称为派生类。派生类可以继承基类的所有成员(包括数据成员和成员函数),而不必重新编写相应的代码,并且为了使派生类具有自己所需的功能,在派生类中可以对不适合于自己的基类成员进行重新定义,当然也可以定义自己所需的新成员。使用继承机制要注意以下几个方面:
调用子过程。在基类中定义公用方法,供派生类中的方法调用。
分解因子。在抽象基类中定义公用方法,以让派生类继承,从而降低为增添新子类而需付出的工作量。
把代码封装在类中。
使用模板
在实际问题中,经常会遇到这样一些函数和类,它们的逻辑功能和实现算法完全相同,仅仅是所处理的数据类型不同。这时可以用模板来完成功能。模板实际上就是将数据类型作为参数进行传递。
这正是:
面向对象有特点,实现重用有原则
处理方法和模板,继承机制作用多
参考书目:软件工程(第4版),作者:张海藩 吕云翔,出版社:人民邮电出版社有限公司