C++编程风格 翻译 感言

来源:互联网 发布:linux删除所有文件命令 编辑:程序博客网 时间:2024/06/05 20:26
 
本书的读者对象是具有一定C++编程基础的程序员。
很多程序员在刚刚进入到C++编程领域时,最大的愿望就是尽快地使自己编写的代码能够运行起来。例如,当我们创建出第一个漂亮的窗口界面时,完整地显示出第一张影像时,让两个socket之间第一次互相通信时,总是会激动不已。然而,随着编码工作的不断深入,我们会发现程序将变得越来越庞大和复杂。我们所要面对的将不仅仅只是一个个简单的功能,而是一个相互关联的功能集合。此时,如果还是按照原来简单的思路去进行设计,我们会变得越来越力不从心,开发工作总是陷于不停的调整和反复的修改,而且程序的bug也是不断出现。所有的这些问题都是因为我们还没有站在“大规模编程”的角度来看待和设计程序。在设计一个复杂的程序时,我们的重点应该是放在模块之间的相互交互层面上,而不再是某个模块的具体实现上。事实上,在实现相同的模块时,新手和高手之间的一个重要区别,就是看在实现这个模块时,是不是充分地考虑了与其他模块之间的合理交互。本书所要解决的就是这方面的问题,主要包括:
1) 如何使系统的整体设计更为合理。包括分析和识别出正确的抽象,设计有效的类层次结构,降低类之间的耦合性,提高每个类内部的内聚性,并将系统的各个功能合理地分配到每个类中。这方面的内容可以参考第1,3,8章。
2) 如何防止出现一些微妙的错误。C++是一种非常灵活的语言,而这种灵活性也往往会带来一些微妙的错误。如果我们在编码是没有充分地意识到这些情况,可能会产生一些难以发现的bug,例如语义上的不一致性,编译器生成的隐含对象等。这方面的内容可以参考第2,4,6章。
3) 如何合理地使用C++中的高级特性。C++之所以功能强大,是因为它定义了许多功能强大的特性,例如虚函数,运算符重载等。然而,这些高级特性并不是多多益善的,在某些情况下,使用这些高级特性反而会适得其反。这方面的内容可以参考第4,5章。
4) 如何找出程序的性能瓶颈并提高程序的执行效率。在某些情况中,我们在程序的执行速度上有着明确的要求,这就要求我们对程序的执行进行详细地分析,找出能够提升性能的地方。这方面的内容可以参考第7章。
5) 本书在第9章中还讨论了多重继承的内容。虽然需要使用多重继承的环境是很少的,但这并不意味着这项技术价值就很小,例如,在微软的COM技术中,多重继承就是基础技术之一。
此外,本书的讲解方式也是值得推荐的地方。本书讲解的方式是:首先从实际的程序中抽取出一段有问题代码,然后对代码中的问题进行逐步深入地分析和讲解,最后给出正确的解决方案。这种情形就好像是在项目的周例会上,大家坐在一起来对代码进行review,并对一些常见的问题进行讨论和改正。从实际中进行分析和总结,这无疑是提升编程能力的有效途径。
译者在翻译本书的时候,已经从事了多年的C++开发工作。回顾这些年的学习和工作经历,其中不乏痛苦的不眠之夜,当然也有成功解决问题的喜悦。C++语言是一种非常强大的语言,它能适用于许多不同环境下的软件开发。因此,C++所带来的强大功能总是难以让人拒绝。当然,要学好和用好C++同样是不容易的。学习是一个困难的过程,不仅要求我们有足够的毅力,兴趣,也要求我们有正确的学习方法,当然健康的身体是首要的保证。
真诚地希望本书能够极大地提升读者的C++编程能力。对于本书中的问题和理解困难之处,请给我发E-Mail:niexuejun@sina.com,我会尽力给出答复。