大规模C++程序设计-概述

来源:互联网 发布:python 3.4.0.msi 编辑:程序博客网 时间:2024/06/05 20:32

人们普遍认为在管理大型系统的复杂性方面,面向对象范型存在潜在优势。但是,如果你认为在大型项目中,只要使用C++就会确保成功,那就完全错了。
面向对象范型声名狼藉,因为面向对象范型比相应的面向过程技术需要更多的设计工作和悟性。通过虚函数改变内部行为的能力会使类不变量无效,这些类不变量对于纠正性能是必不可少的。而且,贯穿一个面向对象系统的控制流路径潜在数量可能会爆炸性地增大。
当程序规模变得更大时,不同属性的效力就开始起作用。
例如:

1. 循环依赖

2. 过度的链接时依赖

对象的好处之一是在需要时很容易添加功能。面向对象范型这种几乎诱人的特性让许多一丝不苟的开发人员把高效、考虑完善的类转换成具有大代码的“庞大恐龙”-绝大多数客户端没有使用大部分的类。
应用特别细致的String类编写的”Hello World”程序,竟然产生了1.2MB的可执行文件长度。

3. 过度的编译时依赖

用C++开发多文件程序,更改一个头文件可能会引起许多编译单元重新编译。随着系统的继续开发,重新编译整个系统所需的时间在逐渐增加,编译单个编译单元的时间也在逐渐增加。

4. 全局名字空间

全局标识符的广泛应用可能会引发问题。一种显而易见的危险是这些名字可能会存在冲突。结果是,若不修改名字冲突,独立开发的系统部件将无法集成到一起。对于拥有数百个头文件的更大型项目来说,即使查找一个全局名字的声明也是一件困难的事情。

5. 逻辑设计和物理设计

大部分关于C++的书中只讲述了逻辑设计。逻辑设计是指从属于诸如类、运算符、函数等语言结构的那些设计。
物理设计解决的是与一个系统物理实体(像文件、目录和库等)密切联系的问题和物理实体之间的编译时依赖或者链接时依赖之类的组织问题。

6. 重用

重用意味着耦合。
重用通常是一个好方案,但是为了成功重用,组件或子系统一定不要与一大段不必要的代码绑定在一起。也就是说,必须能够重用所需要的系统的一部分,同时不必链接系统的其他部分。
并不是所有的代码都可以重用,试图实现过多的功能或者为实现对象进行鲁棒错误检测,可能会增加不必要的开发和维护成本,同时也会增加可执行代码的大小。

0 0
原创粉丝点击