C++程序设计之四书五经(二)

2014-11-24 13:20:05 · 作者: · 浏览: 43
说”的书。这本书同样具有一个明显的风格:所有程序例子全部采用标准库组件,让人耳目一新。 
  以上三本书都不是为了完完全全的编程新手而写。完全的C++编程新手可以阅读FrancisGlassborow的新书(尚未出版):《ABeginners Introduction to ComputerProgramming : You Can DoIt!》。这也是Bjarne的推荐。FrancisGlassborow是ACCU主席,多年来他对几乎每一本C++经典名著评头论足,他自己的这一本自然会引起C++社群的极大兴趣。

   高效、健壮编程

  两年前我在负责一个省级电力调度系统项目时编写了一个网关程序,它从SCADA系统获取电力实时信息。通讯接口采用了不常用的 数据库直连方式(这个网关程序一端连接SQLServer6.5,另一端连接Oralce8.1.6)。由于实时测点近万,每次将全部取样更新或插入一遍显然是低效的。我在网关程序里建了一个内存库,获取到的数据首先在其中进行比较,然后决定是否更新物理数据库(同时还做了别的更复杂的事情……),从而在效率和资源占用两方面达到了预期效果。

  这个程序一直运行得很好,但在离开现场之后的某一天, 系统管理员打来电话,说大概因为网络故障等原因,有时这个网关程序会崩溃掉―它自己崩掉也就罢了,问题是它还会把Windows 2000AdvancedServer搞成“蓝屏”!坦白地说,我还从来没看过哪个非蓄意的程序有这个“能耐”。由于当时正忙于另外一个大项目,无法去现场调试,最后只有凭经验对内存库代码小心翼翼地封装以异常处理代码(同时也做了一些别的修改……)。这样,虽然没有彻底解决问题,但程序终究不再死得那么难看了。

  在这儿讲这么一段花絮有什么意思呢(当初为那个可怕的bug朝思暮想时我可不认为这是一个“花絮”)?我想说的是,对于任何软件而言,离开强健,效率也就无从谈起。而对于C++程序员来说,也许编写一个高效的程序并不难,但要编写一个需要724小时持续运行的服务端软件就不是那么容易了,需要考虑许多因素,有时这些因素甚至远远超出C++语言和开发工具的本身。作为一名开发实际项目软件的程序员,并非非得自己碰钉子才能积累经验,只要我们足够虚心,别人的经验往往都是我们很好的借鉴。鉴于此,我推荐以下几本书供你选读,它们可以让你从强健和效率两方面受益(当然了,它们涵盖的内容远不限于异常处理J)。

  Scott Meyers, Effective C++: 50 Specific Ways to ImproveYourPrograms and Design (2nd Edition)

  Scott Meyers, More Effective C++: 35 New Ways to ImproveYourPrograms and Designs

  《Effective C++中文版》,华中科技大学出版社

  《More Effective C++中文版》,中国电力出版社

  《Effective C++(影印版)》,中国电力出版社

  如果说《Effective C++》主要讨论C++中一些相对基础的概念和技巧的