C++编程规范

C++编程规范 pdf epub mobi txt 电子书 下载 2026

出版者:人民邮电出版社
作者:Herb Sutter
出品人:
页数:216
译者:刘基诚
出版时间:2016-3-1
价格:39.00元
装帧:平装
isbn号码:9787115351357
丛书系列:C和C++实务精选
图书标签:
  • C++
  • C/C++
  • 计算机
  • 编程
  • 编程语言
  • 软件开发
  • 计算机科学
  • 已卖
  • C++
  • 编程规范
  • 代码风格
  • 软件工程
  • 可读性
  • 维护性
  • 最佳实践
  • 编程指南
  • 代码质量
  • C++
  • 开发
  • 编码规范
想要找书就要到 本本书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

在《C++编程规范:101条规则、准则与实践》中,两位知名的C++专家将全球C++界20年的集体智慧和经验凝结成一套编程规范。这些规范可以作为每一个开发团队制定实际开发规范的基础,更是每一位C++程序员应该遵循的行事准则。书中对每一条规范都给出了描述,并辅以实例说明;从类型定义到错误处理,都给出了C++实践,即使使用C++多年的程序员也会从本书中受益匪浅。

《C++编程规范:101条规则、准则与实践》适合于各层次C++程序员使用,也可作为高等院校C++课程的教学参考书。

作者简介

Herb Sutter是ISO C++标准委员会主席,《C++ Users Journal》杂志特邀编辑和专栏作家。他目前在微软公司领导.NET环境下C++语言扩展的设计工作。

Andrei Alexandrescu是C++专家,《C++ Users Journal》杂志的专栏作家,他的《Modern C++ Design》一书曾荣获2001年C++图书称号。

目录信息

组织和策略问题1
第0条不要拘泥于小节(又名:了解哪些东西不应该标准化)2
第1条在高警告级别干净利落地进行编译4
第2条使用自动构建系统7
第3条使用版本控制系统8
第4条做代码审查9设计风格11
第5条一个实体应该只有一个紧凑的职责12
第6条正确、简单和清晰xx13
第7条编程中应知道何时和如何考虑可伸缩性14
第8条不要进行不成熟的优化16
第9条不要进行不成熟的劣化18
第10条尽量减少全局和共享数据19
第11条隐藏信息20
第12条懂得何时和如何进行并发性编程21
第13条确保资源为对象所拥有。使用显式的RAII和智能指针24
编程风格27
第14条宁要编译时和连接时错误,也不要运行时错误28
第15条积极使用const30
第16条避免使用宏32
第17条避免使用“魔数”34
第18条尽可能局部地声明变量35
第19条总是初始化变量36
第20条避免函数过长,避免嵌套过深38
第21条避免跨编译单元的初始化依赖39
第22条尽量减少定义性依赖。避免循环依赖40
第23条头文件应该自给自足42
第24条总是编写内部#include保护符,决不要编写外部#include保护符43
函数与操作符45
第25条正确地选择通过值、(智能)指针或者引用传递参数46
第26条保持重载操作符的自然语义47
第27条优先使用算术操作符和赋值操作符的标准形式48
第28条优先使用++和--的标准形式。优先调用前缀形式50
第29条考虑重载以避免隐含类型转换51
第30条避免重载&&、||或,(逗号)52
第31条不要编写依赖于函数参数求值顺序的代码54
类的设计与继承55
第32条弄清所要编写的是哪种类56
第33条用小类代替巨类57
第34条用组合代替继承58
第35条避免从并非要设计成基类的类中继承60
第36条优先提供抽象接口62
第37条公用继承即可替换性。继承,不是为了重用,而是为了被重用64
第38条实施安全的覆盖66
第39条考虑将虚拟函数声明为非公用的,将公用函数声明为非虚拟的68
第40条要避免提供隐式转换70
第41条将数据成员设为私有的,无行为的聚集(C语言形式的struct)除外72
第42条不要公开内部数据74
第43条明智地使用Pimpl76
第44条优先编写非成员非友元函数79
第45条总是一起提供new和delete80
第46条如果提供类专门的new,应该提供所有标准形式(普通、就地和不抛出)82
构造、析构与复制85
第47条以同样的顺序定义和初始化成员变量86
第48条在构造函数中用初始化代替赋值87
第49条避免在构造函数和析构函数中调用虚拟函数88
第50条将基类析构函数设为公用且虚拟的,或者保护且非虚拟的90
第51条析构函数、释放和交换xx不能失败92
第52条一致地进行复制和销毁94
第53条显式地启用或者x止复制95
第54条避免切片。在基类中考虑用克隆代替复制96
第55条使用赋值的标准形式99
第56条只要可行,就提供不会失败的swap(而且要正确地提供)100
名字空间与模块103
第57条将类型及其非成员函数接口置于同一名字空间中104
第58条应该将类型和函数分别置于不同的名字空间中,除非有意想让它们一起工作106
第59条不要在头文件中或者#include之前编写名字空间using108
第60条要避免在不同的模块中分配和释放内存111
第61条不要在头文件中定义具有链接的实体112
第62条不要允许异常跨越模块边界传播114
第63条在模块的接口中使用具有良好可移植性的类型116
模板与泛型119
第64条理智地结合静态多态性和动态多态性120
第65条有意地进行显式自定义122
第66条不要特化函数模板126
第67条不要无意地编写不通用的代码128
错误处理与异常129
第68条广泛地使用断言记录内部假设和不变式130
第69条建立合理的错误处理策略,并严格遵守132
第70条区别错误与非错误134
第71条设计和编写错误安全代码137
第72条优先使用异常报告错误140
第73条通过值抛出,通过引用捕获144
第74条正确地报告、处理和转换错误145
第75条避免使用异常规范146
STL:容器149
第76条默认时使用vector。否则,选择其他合适的容器150
第77条用vector和string代替数组152
第78条使用vector(和string::c_str)与非C++API交换数据153
第79条在容器中只存储值和智能指针154
第80条用push_back代替其他扩展序列的方式155
第81条多用范围操作,少用单元素操作156
第82条使用xx的惯用法真正地压缩容量,真正地删除元素157
STL:算法159
第83条使用带检查的STL实现160
第84条用算法调用代替手工编写的循环162
第85条使用正确的STL查找算法165
第86条使用正确的STL排序算法166
第87条使谓词成为纯函数168
第88条算法和比较器的参数应多用函数对象少用函数170
第89条正确编写函数对象172
类型安全173
第90条避免使用类型分支,多使用多态174
第91条依赖类型,而非其表示方式176
第92条避免使用reinterpret_cast177
第93条避免对指针使用static_cast178
第94条避免强制转换const179
第95条不要使用C风格的强制转换180
第96条不要对非POD进行memcpy操作或者memcmp操作182
第97条不要使用联合重新解释表示方式183
第98条不要使用可变长参数(...)184
第99条不要使用失效对象。不要使用不安全函数185
第100条不要多态地处理数组186
参考文献187
摘要汇总193
索引205
· · · · · · (收起)

读后感

评分

光买了书,唉没时间看书啊!我电脑Z差啊,学得头都大了啊!还好,室友告诉我上猎豹网校,看那个视频课程学。嘿嘿,这是个简单容易的办法!这下不再担心买了书,束之高阁了!

评分

[2018.10 更新] 关键字: 面向对象设计 (OOD), 封装性 (encapsulation), 抽象 (abstraction), 不变式 (invariants), 分离编译 (separate compilation), pImpl 惯用法, 聚合类 (aggregate class), 静态检查 (static checking), SOLID 原则, 替换原则 (Liskov substitution princ...  

评分

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

评分

光买了书,唉没时间看书啊!我电脑Z差啊,学得头都大了啊!还好,室友告诉我上猎豹网校,看那个视频课程学。嘿嘿,这是个简单容易的办法!这下不再担心买了书,束之高阁了!

评分

引用pongba的话:C++中众多的细节虽然在库设计者手里面有其用武之地,但普通程序员则根本无需过多关注,尤其是没有实际动机的。 关注编码实践准则才是真正需要花时间掌握的东西!  

用户评价

评分

我购买这本书的一个主要动机是希望解决团队中新人入职培训的问题,建立一套统一、易于理解的团队规范。我期望这本书能提供那种可以打印出来贴在工位旁边的“十大禁忌”清单。然而,这本书的重点似乎完全不在于“易于理解”和“快速上手”。它的章节结构更像是一棵庞大的、横向生长的知识树,而不是一个垂直向上的学习路径。例如,有一个关于“资源管理器的正确封装模式”的章节,洋洋洒洒写了十几页,核心思想是要避免显式的析构函数调用,而是完全依赖堆栈生命周期。这个理念本身无可指摘,但书中为了阐述这个理念,反复引用了大量关于操作系统中断处理和信号槽机制的细节,这些细节对于理解“资源管理”这个高级概念来说,无疑是冗余的噪音。我尝试跳过这些细节,直接寻找结论,但每次跳跃都会让我对前文的理解产生动摇,因为作者的论证环环相扣,缺少任何一个环节都会导致后续理解的崩塌。这迫使我必须逐字逐句地阅读,耗费了大量的精力去区分哪些是核心规范,哪些是为支撑规范而展开的旁枝末节的学术论证,效率大打折扣。

评分

说实话,这本书的装帧设计和纸张质量给我留下了非常深刻的印象,拿在手里沉甸甸的,一看就是精心打磨的作品。我特地选了一个周末的早晨,泡了一壶英式红茶,准备沉浸式地学习其中的“最佳实践”。我最期待的是它关于错误处理机制的章节,毕竟在项目维护中,健壮性是重中之重。然而,当我翻到那部分时,我看到的是对异常安全性等级划分的近乎偏执的探讨,以及对 RAII 模式在复杂继承体系中应用的详尽案例分析,每一个案例都涉及至少三个相互依赖的类,并且配上了大量的 UML 图示。这些图示非常精美,线条流畅,但信息密度过高,需要极强的上下文记忆能力才能跟上作者的思路。我尝试着在我的当前项目中套用其中一套“强保证”级别的错误处理框架,结果发现为了实现这种极致的安全性,我需要改动大量现有的、已经稳定运行的代码结构,引入了比原先错误码处理复杂十倍的逻辑。这让我开始怀疑,这种规范是否过于理想化,脱离了大多数商业项目对开发效率和短期交付的现实需求。它更像是一份为“完美代码”量身定制的圣经,而不是一个能适应“尚可接受代码”的实用手册。对于需要快速迭代的团队而言,这种追求完美的精神固然可嘉,但执行起来的阻力实在太大了。

评分

这本厚重的书摆在我的书架上,名字是《C++编程规范》。我承认,当初购买它,是抱着一种近乎朝圣的心态,期望能从中汲取到业界大牛们经过无数血泪教训凝练出的“真言”。然而,翻开第一章,那种扑面而来的,关于模板元编程的晦涩讨论,就让我手中的咖啡差点洒了出来。我原本以为会看到一系列清晰明了的“当做什么,不该做什么”的列表,类似于公路交通规则那样简洁有力。取而代之的是对C++标准委员会最新草案中某些特性的深入哲学思辨,以及关于内存模型在不同编译器架构下的微妙差异。当我试图寻找一个关于命名约定的明确指导时,我发现作者用了一个非常抽象的比喻,将变量命名比作构建宏伟建筑时的砖块排列——这听起来很有诗意,但在我急需一个`const`前缀还是后缀的答案时,这种诗意显得有些奢侈和不切实际。我花了整整一个下午,试图理解其中关于“零开销抽象”的论述,但最终的感受更像是参加了一场高深的学术研讨会,而非期待中的实用指南。这本书无疑对那些已经精通C++底层机制的资深架构师具有极高的价值,他们或许能从这些细微的差别中洞察出性能优化的魔鬼,但对于我这种需要快速提升日常编码规范性和可维护性的中级开发者来说,它的门槛高得让人望而却步,仿佛在阅读一本高级理论物理学的教科书,而不是一本工具书。

评分

这本书的篇幅令人望而生畏,仿佛一本厚重的字典,里面充满了作者对C++语言复杂性的深刻洞察。我特别留意了其中关于“并行编程与并发安全”的部分,期望能从中找到现代多核处理器环境下编写无锁数据结构的黄金法则。书中确实提供了关于原子操作(`std::atomic`)的深入剖析,甚至涉及到底层的内存屏障指令集。我学习到了许多关于指令重排序的微妙之处,这些知识对于编写高性能、高并发的系统代码是至关重要的。然而,作者对于如何将这些底层的、晦涩的知识“翻译”成日常应用代码中的清晰规范,却着墨不多。与其说这是一本“编程规范”,不如说这是一部C++并发模型的“深度技术手册”。它教会了我“为什么”某些操作是危险的,以及“如何”从硬件层面保证正确性,但对于“在实际业务代码中,何时应该引入互斥锁,何时应升级为无锁结构”这种工程决策的权衡艺术,则鲜有提及。对于一个项目经理来说,这本书提供了深入钻研的工具,但对于需要快速做出团队技术选型和编码标准决策的决策者而言,它提供的深度似乎超出了日常所需,更像是一份供研究人员参考的详尽技术白皮书。

评分

这本书的排版风格非常独特,采用了左右分栏的布局,左边是主论述,右边则辟出一个名为“历史脚注”的专栏,里面充满了关于某个语法特性被引入C++标准委员会时的争议记录。这个设计初衷可能是为了提供更丰富的背景知识,但实际阅读体验却显得有些割裂。我本想快速定位到关于“现代C++(C++11/14/17)特性应如何规范使用”的章节,却发现这些现代特性被分散地揉碎在了对旧有模式的批判之中。作者似乎对C++98时代的编程哲学抱有一种深沉的依恋,对新特性的接纳显得十分审慎,甚至带着一丝批判的语气。例如,关于`auto`关键字的使用,书中花了大篇幅论证了在某些特定场景下,过度依赖`auto`会导致类型推导的“隐藏陷阱”,这无疑是正确的警示,但对于那些习惯了使用`auto`以简化长模板类型声明的读者来说,这种说教式的提醒显得有些杞人忧天。我感觉自己像是在听一位老教授讲述他年轻时如何用汇编语言优化循环,虽然知识渊博,但与我目前使用的IDE和编译器环境的集成度不高,使得理论与实践之间的鸿沟难以跨越。

评分

这本书有关c++编程规范的总结还是不错的,包含了很多实践中的真知灼见,有了实践之后读这本书会感同身受

评分

这本书有关c++编程规范的总结还是不错的,包含了很多实践中的真知灼见,有了实践之后读这本书会感同身受

评分

终于看完这本书了,有些地方写的挺绕,翻译的水平更是让整本书显得更加晦涩,总的来说,这本书很多内容在《Effective C++》上都有更为通俗和高明的阐述,与其读这本书,不如看看 Google C++开源项目风格指南呢。

评分

内容很不错,很喜欢这种类型的书,让我发现了很多知识盲点,改正了很多不好的习惯,就是翻译有点怪怪的,我只好就着原版PDF一起读。

评分

内容很不错,很喜欢这种类型的书,让我发现了很多知识盲点,改正了很多不好的习惯,就是翻译有点怪怪的,我只好就着原版PDF一起读。

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2026 onlinetoolsland.com All Rights Reserved. 本本书屋 版权所有