Effective C++ 读后感

 

珍贵的经验之谈

——读有感

         书收到的有点晚,所以半个月匆匆忙忙利用上课和课余的时间通读了一遍,于是来发表一下我的拙见。

         这不是一本适合初学者看的C++书籍,里面没有教材上的语法细节;然而这本书是C++八大金刚之一,是一本给进阶或专家级的人看的书。里面的55个条款都是顶级大师Scott MeyersC++多年的经验之谈。我想,对于程序员、项目的管理员、代码分析师……只要是与C++相关的从业人员,都值得拥有此书,因为它为程序及其架构的高效性和健壮性提供了相当有价值的建议。

这本书有很多的特点,首先,书中独立的条款使得对某一方面的快速查阅成了可能。学校所教授的仅仅是浅层次的C++,相当多的内容还只是依附C语言的特点,知识点也仅仅是为了应付考试和考级。而此书的条款分几个大类,把相关的内容和实际所遇到的问题结合起来。例如构造和析构函数,教材仅仅告诉学生,在对象创建和销毁的时候会自动调用所匹配的函数,却也没有更多的建议。很多的函数在编译和运行期间没有问题,可这不代表你所写的就是一个优秀的程序。异常情况或者特殊构造的数据可能因此使得程序崩溃。条款08(别让异常逃离析构函数)09(绝不能在构造和析构函数中调用虚函数)就给了很详细的例子,防止隐患的存在。像此类为程序的健壮性提供的建议还有很多,这为优秀的架构奠定了很好的基础。

作为一个学生,我想谈谈我目前所能理解的。相比之下,国内的C++教材一味的求多求全,甚至不惜花相当多的笔墨在一个无关紧要细节的上,以书的厚度此来显示自己“渊博的知识”,同时也能增加利润。并且书中有的内容甚至信手拈来,在自己没有调试过的情况下就以自己的直觉把自己认为对的写在书上。而这显示了当今国内学术浮躁的氛围。然而这本书并不厚,却是含金量十足。每一条建议都犹如金科玉律,以实例化的代码加以作者详细的说明,详细阐述了使用每个条款的原因,并给出了不好的实例,防止经验不足的我们在编码和设计过程中遇到的普遍错误或者是隐蔽的漏洞。

下面说说我在ACM竞赛时遇到过的一个错误。条款02 :尽量以const, enum, inline 替换 #define。由于C的习惯 常常用#define来编写常数和简短的函数。虽然《C专家编程》也提醒过这样的用法,但是直到练习图论的算法定义INF时,定义INF0x7fffffff,由于类型不匹配,导致我好几个小时不得其解。这是一个不小的教训。

相信这本书不仅对于我,对于很多人都因为缺乏经验而很难在短时间完全接受里面的内容,但它确实值得我们反复的阅读。也许你在项目里经历了无数的错误和失败,才积累起来的经验,在本书里能够找到。我也希望我自己和大家在阅读完书后,对C++有更深入的理解,让自己达到登堂入室的水准。

 

你可能感兴趣的:(学习)