1.12 为向OOP转变而采取的策略

如果决定采用OOP,我们的下一个问题可能是“如何才能使得经理/同事/部门/伙伴开始使用OOP?”想想看,作为独立的程序员,应当如何学习使用新语言和新的程序设计形式。和前面一样,首先训练和做例子,再通过一个试验项目得到一个基本的感觉,不要做太混乱的任何事情,然后尝试做一个“真实世界”的实际有用的项目。在第一个项目中,通过读、向专家问问题、与朋友切磋等方式,继续我们的训练。基本上,这就是许多有经验的程序员建议的从C转到C++的方法。转变整个公司当然应当采用某些动态的方法,但回忆个人是如何做这件事的,能在转变的每一步中起帮助作用。

1.12.1 指导方针

当向OOP和C++转变时,有一些方针要考虑:

1.12.1.1 训练

第一步是某种形式的培训。记住公司在原始C代码上的投资,并且当每个人都在为这些遗留的东西而为难时,应努力在6到9个月内不使公司完全陷入混乱。挑选一个小组进行培训,更适宜的情况是,这个小组成员是一些勤奋好学、能很好地在一起工作的人们,当他们正在学习C++时,能形成他们自己的支持网。

有时建议采用另一种方法,即对公司各级人员同时进行培训,包括为策略经理而开设的概论课程,以及为项目开发者而开设的设计课程和编程课程。对于较小的公司或较大公司的下层,对他们做事情的方法做一些基本的改变是非常好的。因为代价较高,所以一些公司可能选择以项目层训练而开始,做导航式的项目(可能请一个外面的导师),然后让这个项目组变成公司其他人的老师。

1.12.1.2 低风险项目

首先尝试一个低风险项目,并允许出错。一旦得到了一些经验,就将这第一个小组的成员安插进其他项目组中,或者用这个组的成员作为OOP的技术顶梁柱。这第一个项目可能不能正确工作,所以该项目不应是公司的关键任务。它应当是简单的、自成一体的和有指导意义的。这意味着它应当包括创建对于公司的其他程序员学习C++有意义的类。

1.12.1.3 来自成功的模型

在动手之前,挑一些好的面向对象设计的例子。很可能有些人已经解决过我们的问题,如果他们还没有正确地解决它,我们可以应用已经学到的关于抽象的知识,来修改存在的设计,以适合我们自己的需要。这是设计模式的一般概念,将在第2卷中详细讲解。

1.12.1.4 使用已有的类库

转变为C++的主要经济动机是容易使用以类库形式存在的代码(特别是标准C++库,将在本书的第2卷中深入探讨),最短的应用开发周期是利用现有库创建和使用对象,除了main()以外不必自己写任何东西。然而,一些新程序员并不理解这一点,不知道已有的类库,或出于对语言的迷恋希望写可能已经存在的类。如果在转变过程的早期努力查找和重用其他人的代码,那么我们在OOP和C++方面将得到最好的成功。

1.12.1.5 不要用C++重写已有的代码

虽然用C++编译C代码通常会有(有时是很大的)好处,它能发现老代码中的问题,但是把时间花在对已有的功能代码用C++重写上,通常不是时间的最佳利用方法(如果必须翻译成对象,我们可以用C++类“包装”C代码)。特别是,如果代码是为重用而编写的,会有很大的好处。但是,有可能出现这种情况:在最初的几个项目中,并不能看到生产效率如您梦想的一样增长,除非这是新项目。如果是从概念到实现的项目,C++和OOP表现最为出色。