代码复用是必要的,做开发的过程中自然而然感到代码复用的好处,现在感觉复用是必须的。代码复用可以大大提高软件开发的效率。
一、代码复用的历史
代码复用的出现时自然而然产生的,在程序开始变得复杂时,模块化的思想产生了,模块化可以降低耦合性。在函数式编程风行时,把经常使用的功能封装到一个函数中,方便程序维护,方便阅读,更方便以后使用。我想c runtime libary 应经使用了多年,可作为一个例子,还用其他的库。
进而到oop编程的时代,把常用的功能放到一个类中,出现了对象重用,扩大了重用的规模和范围,出现了STL为代表的库。具体重用的 技术有oop的特性之一多态,一个可以指向各种类型的指针(指针的深奥和强大令人惊讶),泛型编程(模板)。可以说从具体的编程技术过渡发展到一种编程框架,一种编程方法,我想有可能会出现一种泛型的IDE。hh. 我想mfc,vcl从某种意义上说也是这方面重用的体现,当然还有其他很多。在组件化时代,com组件大行其道,标志重用技术已经很成熟。com屏蔽了编程语言之间的差异,按照com规范编写的组件
可以在被各种语言环境所使用。activex在网页中应用很多,winform无需安装就可以在网页中运行,这些也模糊了cs和bs的界限。一个个的应用层的组件(....)在也成了公司的核心技术。dcom的出现使com可以在应用在网络(*)中也许系统真的可以通过组件重用通过程序员的组装就可以完成。有点像拉里.埃里森说的“你们都不用做软件了,。。。”. 这些都是开发一个好的系统的利器。写到这里有个想法,要大胆使用现存的各种库,各种可以重用的技术来达到自己的目的。
二 一个com代码重用的例子
1.类重用
一个vc中访问一卡通(java web service)数据的纯虚类 BaseWebCard.h
#pragma once
#include <vector>
using namespace std;
class CBaseWebCard
{
public:
CBaseWebCard(void);
public:
virtual ~CBaseWebCard(void);
//得到卡的余额
virtual BOOL GetBalance(CString strCardNo,CString strCardID,struct_echo_get_balance& s) = 0;
//扣款
virtual BOOL DeductMoney(struct_deduct_money stdm,struct_echo_de