第一图书网

编写高质量代码

李健 机械工业出版社华章公司
出版时间:

2011-12-31  

出版社:

机械工业出版社华章公司  

作者:

李健  

Tag标签:

无  

内容概要

  《编写高质量代码:改善c++程序的150个建议》是c++程序员进阶修炼的必读之作,包含的全部都是c++编码的最佳实践,从语法、编码规范和编程习惯、程序架构和设计思想等三大方面对c++程序和设计中的疑难问题给出了经验性的解决方案,为c++程序员编写更高质量的c++代码提供了150条极为宝贵的建议。每个问题都来自于实践,都极具代表性,本书不仅以建议的方式正面为每个问题给出了被实践证明为十分优秀的解决方案,而且还从反面给出了被实践证明为不好的解决方案,从正反两个方面进行了分析和对比。
  《编写高质量代码:改善c++程序的150个建议》在逻辑上一共分为三个部分:语法部分涵盖c++从c语言继承而来的一些极为重要但又极容易被误解和误用的一些语法特性,从c语言到c++的改变,以及内存管理、类、模板、异常处理、stl等方面的内容;编码习惯和编程规范部分则主要讨论了如何提高程序的正确性、可读性、程序性能和编码效率方面的问题;程序架构和思想部分则从更高的高度对c++程序设计思维和方法进行了审视,给出了一些颇具价值的观点和最佳实践。
  这是一本关于如何提高c++程序设计效率与质量的工具书,希望书中的每条建议都能引起你的思考,对于有难度的内容,建议大家消化理解,切勿死记硬背,同时也希望大家能悟出更好的解决方案。希望本书中的每条建议所传递的思想和理念能够渗透到大家的编码实践中,进而帮助大家真正具备编写高质量c++代码的能力。

作者简介

  李健
资深软件开发工程师,毕业于中科院计算所,有多年C/C++开发经验,积累了丰富的实践经验。曾经参与了国家“十一五”863项目、北京市文化创意项目、上海世博会项目等多个项目的大型软件的架构、设计与开发。此外,对MPICH并行编程与高性能计算、脚本语言Lua、Android和iPhone等移动开发平台也有一定的研究。活跃于CSDN和博客园等技术社区,发表和分享了大量技术文章,深受网友欢迎。

书籍目录

前 言
第一部分 语法篇
 第1章 从c继承而来的
  建议0:不要让main函数返回void
  建议1:区分0的4种面孔
  建议2:避免那些由运算符引发的混乱
  建议3:对表达式计算顺序不要想当然
  建议4:小心宏#define使用中的陷阱
  建议5:不要忘记指针变量的初始化
  建议6:明晰逗号分隔表达式的奇怪之处
  建议7:时刻提防内存溢出
  建议8:拒绝晦涩难懂的函数指针
  建议9:防止重复包含头文件
  建议10:优化结构体中元素的布局
  建议11:将强制转型减到最少
  建议12:优先使用前缀操作符
  建议13:掌握变量定义的位置与时机
  建议14:小心typedef使用中的陷阱
  建议15:尽量不要使用可变参数
  建议16:慎用goto
  建议17:提防隐式转换带来的麻烦
  建议18:正确区分void与void*
 第2章 从c到c++,需要做出一些改变
  建议19:明白在c++中如何使用c
  建议20:使用memcpy()系列函数时要足够小心
  建议21:尽量用newdelete代替mallocfree
  建议22:灵活地使用不同风格的注释
  建议23:尽量使用c++标准的iostream
  建议24:尽量采用c++风格的强制转型
  建议25:尽量用const、enum、inline替换#define
  建议26:用引用代替指针
 第3章 说一说“内存管理”的那点事儿
  建议27:区分内存分配的方式
  建议28:newdelete与new[]delete[]必须配对使用
  建议29:区分new的三种形态
  建议30:new内存失败后的正确处理
  建议31:了解new_handler的所作所为
  建议32:借助工具监测内存泄漏问题
  建议33:小心翼翼地重载operator new operator delete
  建议34:用智能指针管理通过new创建的对象
  建议35:使用内存池技术提高内存申请效率与性能
 第4章 重中之重的类
  建议36:明晰class与struct之间的区别
  建议37:了解c++悄悄做的那些事
  建议38:首选初始化列表实现类成员的初始化
  建议39:明智地拒绝对象的复制操作
  建议40:小心,自定义拷贝函数
  建议41:谨防因构造函数抛出异常而引发的问题
  建议42:多态基类的析构函数应该为虚
  建议43:绝不让构造函数为虚
  建议44:避免在构造析构函数中调用虚函数
  建议45:默认参数在构造函数中给你带来的喜与悲
  建议46:区分overloading、overriding及hiding之间的差异
  建议47:重载operator=的标准三步走
  建议48:运算符重载,是成员函数还是友元函数
  建议49:有些运算符应该成对实现
  建议50:特殊的自增自减运算符重载
  建议51:不要重载operator&&、operator
 ……
第二部分 编码习惯和规范篇
第三部分 程序架构和思想篇

章节摘录

版权页:插图:前面的建议中我们不厌其烦的一再重复:内存泄漏是一个很大很大的问题!为了应对这个问题,已经有许多技术被研究出来,比如Garbage Collection(垃圾回收)、Smart Pointer(智能指针)等。Garbage Collection技术一直颇受注目,并且在Java中已经发展成熟,成为内存管理的一大利器,但它在C++语言中的发展却不顺利,C++为了追求运行速度,20年来态度坚决地将其排除在标准之外。真不知C++通过加大开发难度来换取执行速度的做法究竟是利还是弊。为了稍许平复因为没有Garbage Collection而引发的C++程序员的怨气,C++对Smart Pointer技术采取了不同的态度,它选择对这一技术的支持,并在STL中包含了支持Smart Pointer技术的class,赐予了C/C++程序员们一件管理内存的神器。Smart Pointer是Stroustrup博士所推崇的RAII (Resource Acquisition In Initialization)的最好体现。该方法使用一个指针类来代表对资源的管理逻辑,并将指向资源的句柄(指针或引用)通过构造函数传递给该类。当离开当前范围( scope)时,该对象的析构函数一定会被调用,所以嵌在析构函数中的资源回收的代码也总是会被执行。这种方法的好处在于,由于将资源回收的逻辑通过特定的类从原代码中剥离出来,自动正确地销毁动态分配的对象,这会让思路变得更加清晰,同时确保内存不发生泄露。

媒体关注与评论

在程序员中,曾经有一个广为流传的段子,一位程序员抱怨:“这段代码是谁写的?非傻即呆!”结果他在代码结尾的注释中发现,这正是自己几年前的“杰作”。同样的功能,实现的代码可以千差万别,大师级的程序员可能只需要写两行代码,但程序却近乎完美,一般的程序员可能会敲数百甚至数千行代码,而且还漏洞百出。如何才能编写出高质量的代码呢?这是每个程序员所关心的问题。本书就如何编写出高质量的C++代码,从语法、编码规范和编程思想三大方面给出了大量的最佳实践,极具参考价值。强烈推荐!  ——51CTO(中国领先的IT技术网站)每个程序员都希望自己能编写出优质高效的代码,但真正能做到的少之又少,因为这不仅需要对技术有深入的钻研,而且需要大量经验的积累。本书作者将自己和C++领域的前辈们在大量编程实践中总结出来的经验,从语法、编码习惯和规范、程序设计思想三个方面进行了分类梳理,一共总结出了150条极具参考价值的建议。如果能将本书的内容吃透并融会贯通,不仅能让自己少走弯路,而且还能让自己的编程功力大增。  ——钱林松资深 C++技术专家,著有畅销书《C++反汇编与逆向分析技术揭秘》C++语言以多范型见长,掌握和应用都需要下不小的功夫。然而一旦学成,就如侯捷老师曾经说过的那样有着“妙用无穷”的旨趣和力量。本书从语言、编程规范和程序设计思想三个方面对C++编程中的疑点和难点进行了归纳与分析。实例丰富,语言通俗易懂,为C++程序员巧学和妙用C++指点迷津。这表明国内的作者已经开始摆脱人云亦云的思想枷锁,而开始进行独立思考和写作的实践,这是非常难能可贵的。希望读者们能够从本书中学有所获。  ——高博 盛大创新院技术骨干、知名译者(译有《设计原本》等多本经典著作)


编辑推荐

《编写高质量代码:改善C++程序的150个建议》:从语法、编码习惯和编程规范、程序架构和思想3个方面深入探讨编写高质量C++代码的技巧、禁忌和最佳实践。大多数C++程序员都会在进阶的路上被以下几类问题所困扰:一、来自于语言本身的问题。例如:如何掌握变量定义的位置与时机?为什么不要重载operator&operatorll,以及operator?如何选择合适的STL容器为我所用?二、来自于编码习惯和编程规范方面的问题。例如:如何避免无意中的内部数据裸露?如何给函数和变量起一个能说话的名字?如何使用断言来帮助你发现软件开发中的问题?三、来自于程序架构和思想方面的问题。例如:友元机制破坏封装?如何谨慎恰当地使用友元机制?将对象的继承关系扩展至对象容器将带来哪些隐患?如何从大师的代码中学习编程思想和技艺?

图书封面

图书标签Tags

广告

下载页面


编写高质量代码 PDF格式下载



本书的内容很不错,都详细地分析了C++各种操作的缺点,提供了一袭来改善性的建议。


可以提高代码的性能


对写代码有帮助。


建议都很实在。


对于没有工程经验的,可以学习一样。感觉就像个大牛带着你一样


本来觉得国人写的书不怎么好的,不过这个书是例外,很好啊,很多原来不知道的东西


很不错的书,对于最近C++的再学习很有帮助,之前没好好学,现在结合这个,挺好。


内容不错,有很多平常不注意或不了解的东西。


书 的适量不错


本书需要认真研读。


一直想买这本书,实体店都找不到,当当上面有而且还便宜,关键是送货快,这个尤其要拿出来说一下


条款式目录很像effective,但两者不冲突,感觉这是作者自己的独到心得,讲的也非常好,强烈推荐这本书配合effective一起看


啥也不说了,就是不错


对新手很不错


我要我的礼券


数还不错的数还不错的数还不错的


适合已经有一定的编程基础,希望继续探讨C++的


拿到后,纸张质量不错,内容还可以,适合初级


书记不错可以作为变成规范参考


内容讲的还可以,还在慢慢看


内容虽好,但是勘误有点多啊,还没看几页,印刷错误的地方就让我不忍直视了。。


不错,总结得很好,对我有用。


物超所值,还好


这本书比较贵(按照价格页数比或者价格字数比,都显很贵),但它确实不算一本好书,并不如它所值的钱,感觉性价比不好。


作者总结得很好,用了心的。第三部分倒是可以扩充一下,或者放到前面,先有个大局观,再深入细节,就算不理解再回头看也是挺好的。


看了些 还不错的 对与初学者适合看看的


太坑人了,刚买完,第三天看,降价降了好多。书本很小很薄很袖珍,内容还没仔细看,但愿不会太差吧。


书的内容很好,但不该在亚马逊网站买的。纸张差,目测是盗版。书是从江苏昆山发出的。第一次对亚马逊失望。


150条建议分了不同的类别,讲解详细,很实用,值得一读。


相关图书