《C++编程规范》书评

当前位置:首页 > 网络编程 > 编程语言与程序设计 > C++编程规范

出版社:人民邮电出版社
出版日期:2006-1
ISBN:9787115142054
作者:(美)Herb Sutter, Andrei Alexandrescu
页数:216页

书中引言:快马无须鞭策

其实这本书很鸡肋。因为此书是对一条条的规范、原则、实践等的高度提炼,能力到了自然能理解,能力没到看完也不一定能理解,此时你需要类似《Unix编程艺术》的书,当然你仍然需要足够的实践来支持,要不就会像我一样在这里说大话!如果你是完美主义者,如果你本来就注重思维训练,那么相信你平时就已经在身体力行这书里的大部分规范了。但是即使如此,此书还至少有两个价值:1.措辞优美,并且大量引经据典,可以找到不少其他优秀的书来进一步的阅读;2.让完美主义者避免掉进“过分完美”的陷阱。对了,这类思维、习惯方面的话题,并不要求你一定具有C++的知识,其内容一样适用于其他语言,其他语言的知识也一样能助你理解。

一本就差不多了

温故而知新,重新复习一些C++的知识,有一段时间,出现了非常多关于C++编程规范类型的书籍。这些类型的书籍,很大部分内容是相同的,个人比较喜欢看《C++编程规范》,100条,条款来自《Effective C++》、《More Effective C++》、《Effective STL》、《Exceptional C++》、《More Exceptional C++》等各类书籍。多年以后重新开始看这本书,又有新的收获:1、不要拘泥小节前段时间进行项目开发,小组内的开发人员可以说都是很优秀的开发人员,大家在一起开发,我想总希望能有一个基本的编程规范,很犹豫对于编程规范定义到什么级别。对于缩进、行的长度、注释、大括号的形式大家都有自己习惯的形式,对于这些编写的规范,说实话真的没有太大的必要。不管哪一种形式,只要代码比较清晰,很快就能习惯,读取代码(Review)都比较容易。对于函数名和变量名则需要统一的命名方式,这是大家都比较容易达成共识的编程规范,不要花太多时间去规范一些没有必要的规则,否则阻力很大,效果很差。2、在高警告级别进行编译最近一些开发工作主要是类库的开发,API的设计,所以对于代码的质量要求很高,这就要求对于编译器的各种警告都非常注意,很多bug的引入就是warning开始,很常见的unsigned int和int的转换比较,unsinged int的--操作、浮点数的精度问题等。3、代码审查上的投入项目的开发很产品的开发,其中一个很大的区别就在于生命周期的长短,项目只要验收了就可以,不一定会有后续的项目,但是产品的开发,生命周期很长(当然,因为产品被淘汰另当别论),代码的质量就非常的重要,根据用户的反馈,产品模块的优化升级。如果代码质量差,优化升级会成为一个很痛苦的过程,在产品的开发过程中,要在代码审查中投入。 4、正确、简单和清晰第一上周和同事进行XP编程,发现同事很喜欢直接用调用函数并将函数的返回值作为参数传递,个人喜欢上非常不喜欢这种优化,一是调试很多时候无法看到返回值(纯虚类的接口)。二代码的清晰被破坏,可读性变差。再则我觉得这种优化根本没有必要,都是基本类型的。5、积极使用Const在做API设计的时候,需要考虑API的各种使用情况,需要提供const和非const的版本。6、考虑将虚拟函数申明为非公用的,将公用函数申明为非虚拟的在API设计中,经常会采用多层设计,实现类的设计中引入了虚拟函数和公用函数,避免公用函数被重载。7、广泛的使用断言记录内部假设和不变式越底层,越要采用断言,避免不要的条件判断影响性能以及错误的引入。8、正确的报告、处理和转换错误API的设计,一定要有这些处理和Log,否则用户无法知道错误的原因,导致可用性非常的差。9、显式定义构造函数、析构函数、拷贝构造函数和复制函数。10、还有一点是关于继承实现中的前置条件和后置条件的定义要非常的清晰明确。《C++编程规范》的很多条例也是根据OOD的五大原则进行设计的。1、单一职责原则(SRP)2、开放-封闭原则3、Liskov替换原则4、依赖倒置原则5、接口隔离原则

相当适合有一定C++编程经验的初级,中级程序员

这本书相当适合有一定C++编程经验的初级,中级程序员阅读。这本书讨论了101个规则,每个规则都按照,固定的格式(包括条款标题,摘要,讨论,示例等部分)进行说明。这样的编排方式即清晰又符合我们理解接受的渐进过程。也许可以边看书边试着做一些回忆,想想自己是否在编程时候使用或注意到这些规范。还可以问自己一些问题,例如在我们的设计风格中是否注意了,”对一个函数之赋予一种职责“,”正确,简单和清晰第一,软件简单为美(Keep It Simple Software, KISS)“,”优先使用线性算法或者尽可能快的算法:例如O(N)“,”尽量减少全局和共享数据(会增加耦合度,从而降低可维护性,通常还会降低性能)“等等。我们也可以考虑一下我们的编程风格,并问自己: 我们有没有做到避免使用宏, 尽可能局部声明变量, 总是初始化变量,避免函数过长,避免嵌套过深,是否做到确保所编写的每个头文件都能够独自进行编译。C++之父Bjarne Stroustrup说过“软件开发最重要的一个方面就是弄清楚自己要构建的是什么”,对于类的设计与继承这一部分也相当值得一读,例如以下条款“用小类代替巨类”,“ 用组合代替继承”,“避免从并非要设计成基类的类中继承”,“优先提供抽象接口”,“共用继承即可替换性。继承,不是为了重用,而是为了被重用,Liskov替换原则: Liskov Substitution Principle,共用继承所建模的必须总是“是一个is a”,更精确的“其行为象一个 works like a ”关系:所有基类约定必须满足这一点。”等等,也许我们对这些规则都了然于胸,但是我们是否时时刻刻注意到这些规则呢,这本书就提供了这样一个“小声音”,提醒我们,在经过一段时间的编程后,我们也许常常会被一些“坏习惯”占据,这个“小声音”,也许就是摒除这些“坏习惯”的利器,也许你和我一样在编写C++的时候会不自觉地使用了一些不先进的C的方式,例如使用数组,匈牙利标法,switch等等,看了这本书后绝对会大有启发,例如以下的部分书摘:”匈牙利记法:将类型信息并入变量名的记法,是混用了类型不安全语言(特别是C)中的设施,这在面向对象语言中是可以存在的,但是有害无益,在泛型编程则更不不行。所以,任何C++编程规范都不应该要求使用匈牙利记法,而在规范中选择禁用该记法则是合理的。“ ”通过类型分支(type switching)来定制行为既不牢固,容易出错,又不安全,而且是企图用C++编写C代码的明显标志。这是一种很不灵活的技术,要添加新特性时必须回过头对现有代码进行修改。它还不安全,因为添加新类型时,如果忘记修改所有分支,编译器也不会告知。““不要使用C语言风格的数组,指针运算和内存管理原语操作实现数组抽象。使用vector或者string不仅更轻松,而且还有助于编写更安全,伸缩性更好的软件。毋庸置疑,在当今软件中缓冲区溢出和安全缺陷是罪魁祸首。固定长度的数组所带来的愚蠢限制,即使仍在正确界限内,也是软件开发人员的一大困扰。””不要使用C风格的强制转换。“初级,中级程序员看了本书后一定会大有收获,掌握这些规范,也许是成长为优秀程序员的重要的坚实一步。------- ------本文原始地址:http://hanyionet.blogspot.com/2009/09/blog-post_20.html

具体介绍一下12个部分的内容

本评论转自我的Blog转载必须包含本声明、保持本文完整。并以超链形式注明作者编程随想和本文原始地址:http://program-think.blogspot.com/2009/01/cxx-coding-standards-101-rules.html全书的101个条款分布在如下的12部分中,下面来挨个介绍一下。1、组织与策略这部分其实不是讲C++,而是更偏向于软件工程方面。如果你是一个部门或者团队的主管,要仔细思考一下:这些条款你的团队/部门是否都做到了?如果你是一个C++新手,可以先略过这部分。2、设计风格这部分讲的是通用程序设计哲学,并不限于C++,而是适用于所有的编程语言。如果你对C++已经入门,但是想再上一个境界,本部分你必须好好领会。我估计有十年编程经验的老手也未必能够完全吃透该部分的所有条款。3、编码风格终于开始说到C++语法了!本部分说得都是一些基本的东东,C++新手要好好看看这部分,老手倒未必了。4、函数与操作符(运算符)如果你是从其它语言Java和C转到C++,可能对操作符重载还不适应,需要了解一下这部分。如果你原来是Python程序员,估计对操作符重载,应该会比较有亲切感。5、类设计和继承最好你已经有了一定的OO理论功底,然后再来看这部分,效果会更好。6、构造、析构、拷贝这部分读起来的难度不大。不过有几个几个细节需要注意(即使你已是熟手)。7、名空间和模块如果你需要从事规模比较大的C++项目的开发,那么本部分一定要了解一下。比较大的项目一般都会涉及到逻辑分割(分名空间)和物力分割(分模块)。8、模板与范型这部分适合已经比较熟悉C++的开发人员,新手可以先略过。9、错误处理与异常错误和异常的处理,是编程领域公认的难点。头几条是关于原理性的条款(因此也适用于其它语言),需要深刻领会;后几条是关于C++语法,你如果对try-catch不熟悉的话要注意看看了(即使是2-3年开发经验的,也有许多不熟悉异常处理)。10、STL容器 11、STL算法如果你是从其它语言(Java、C)转到C++,或者你原先只用MFC,那么估计你的STL会有欠缺,好好看看这两部分吧。12、类型安全如果你是从C转到C++,这部分尤其要注意看一下。里面提到的几个条款都是和C的缺点有关(这么说,C fans看了可别动怒啊)。

比较轻量级的一本书。如果你已经看过 effective c++ ,exceptional c++系列,那这本书只用翻翻目录就行了。

很鸡肋的一本书

名字起的很有吸引力,其实内容很多章节讲的东西,都是<<effective c++>>里面的,我不知道原版书的文采怎么样?所以我不好妄加评论,但这本中文版的译者的翻译水平,我真的不敢苟同,翻译的僵硬,晦涩,缺乏灵活性,估计就是逐字翻译的,唉,浪费了我几十块钱,买了一本多余的书!

号称是20年集大成之作

号称是20年集大成之作,罗列了一大堆最佳实践的条款有口号,有说明,有实作,形式上挺好前面一些谈设计,组织,策略上的条款是很实在,后面展开谈细节,模板,异常,容器,算法之类,就难逃教条主义的嫌疑了,晦涩,模糊,说服力不强中间用的例子有些也不是很清晰贴切


 C++编程规范下载 精选章节试读


 

外国儿童文学,篆刻,百科,生物科学,科普,初中通用,育儿亲子,美容护肤PDF图书下载,。 零度图书网 

零度图书网 @ 2024