作者:
Herb Sutter
/
Andrei Alexandrescu
出版社: 人民邮电出版社
副标题: 101条规则、准则与最佳实践
原作名: C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
译者: 刘基诚
出版年: 2016-3-1
页数: 216
定价: 39.00元
装帧: 平装
丛书: C和C++实务精选
ISBN: 9787115351357
出版社: 人民邮电出版社
副标题: 101条规则、准则与最佳实践
原作名: C++ Coding Standards: 101 Rules, Guidelines, and Best Practices
译者: 刘基诚
出版年: 2016-3-1
页数: 216
定价: 39.00元
装帧: 平装
丛书: C和C++实务精选
ISBN: 9787115351357
内容简介 · · · · · ·
在《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
· · · · · · (更多)
第0条不要拘泥于小节(又名:了解哪些东西不应该标准化)2
第1条在高警告级别干净利落地进行编译4
第2条使用自动构建系统7
第3条使用版本控制系统8
第4条做代码审查9设计风格11
· · · · · · (更多)
组织和策略问题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
· · · · · · (收起)
第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
· · · · · · (收起)
丛书信息
· · · · · ·
C和C++实务精选(共39册),
这套丛书还有
《C++编程剖析》《C Primer Plus 第6版 中文版》《C专家编程》《C++面向对象多线程编程》《C专家编程》
等
。
喜欢读"C++编程规范"的人也喜欢 · · · · · ·
C++编程规范的书评 · · · · · · ( 全部 11 条 )
相当适合有一定C++编程经验的初级,中级程序员
这篇书评可能有关键情节透露
这本书相当适合有一定C++编程经验的初级,中级程序员阅读。这本书讨论了101个规则,每个规则都按照,固定的格式(包括条款标题,摘要,讨论,示例等部分)进行说明。这样的编排方式即清晰又符合我们理解接受的渐进过程。 也许可以边看书边试着做一些回忆,想想自己是否在编程... (展开)关于第33条用小类代替巨类
其实我想看个实践,别人的方法。 副标题叫Best Practices,但是Practice很少。 这本书的内容都缺少实践,站着说话不腰疼,对于我这样的菜鸟感觉是这样的。 比如这条,比如有个巨类: CHugeClass { function0(); function1(); function2(); function3(); .... f...
(展开)
C++ Coding Standards
我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看...
(展开)
> 更多书评 11篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部6 )
-
人民邮电出版社 (2006)8.3分 430人读过
-
Addison-Wesley Professional (2004)8.4分 89人读过
-
人民邮电出版社 (2010)8.5分 40人读过
-
人民邮电出版社 (2005)暂无评分 18人读过
以下书单推荐 · · · · · · ( 全部 )
- C/C++必读经典 (司马元朗)
- c++ (旧居)
- 引进西方教科书 Pearson篇 (已己巳)
- 勿在浮沙筑高台 (勿在浮沙筑高台)
- Game Programer (Hkiller)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
- 在豆瓣转让 有108人想读,手里有一本闲着?
订阅关于C++编程规范的评论:
feed: rss 2.0
0 有用 曾阿牛 2016-10-30 12:59:51
委员会主席写的 很好吧
0 有用 cobbliu 2019-08-04 12:53:46
适合新手看
0 有用 略游 2020-05-10 00:24:53
实践中我思考过的很多问题,终于有了一些答案,或者与大神巧然一致。不过有些章节翻译有问题,有些章节也不理解和认同,可能是因为实践还未遇到。然后原书也太老了,应该是零几年的书。要不然肯定能看到作者对异常、lambda表达式、常量表达式、原子操作等内容更新的理解。
0 有用 阿列克斯 2019-05-19 00:21:41
终于看完这本书了,有些地方写的挺绕,翻译的水平更是让整本书显得更加晦涩,总的来说,这本书很多内容在《Effective C++》上都有更为通俗和高明的阐述,与其读这本书,不如看看 Google C++开源项目风格指南呢。
0 有用 很水 2017-12-17 09:03:47
effective c++ 有重复的地方。
0 有用 异步图书 2023-10-30 09:44:41 北京
c++primer编程入门零基础自学,涵盖了C++程序设计的每一个方面,从类型定义到错误处理等方面的大量C++实践,包括许多总结和标准化的技术。
0 有用 多多 2022-04-01 14:05:36
虽然很多和effective 那本重合,但是还是很经典。但是还是忍不住想说为啥那么好的书推荐的人只看到陈硕一个人呢。。
0 有用 CHESTNUTwww 2020-07-21 20:55:28
最近重构代码,恰逢公司网络出问题,花了一天读完,书里正好谈到了几个痛点,恍然大悟!
1 有用 本因坊逗逼 2020-05-18 18:18:03
C++还真是好多麻烦事儿
0 有用 略游 2020-05-10 00:24:53
实践中我思考过的很多问题,终于有了一些答案,或者与大神巧然一致。不过有些章节翻译有问题,有些章节也不理解和认同,可能是因为实践还未遇到。然后原书也太老了,应该是零几年的书。要不然肯定能看到作者对异常、lambda表达式、常量表达式、原子操作等内容更新的理解。