C++编程规范

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

出版者:人民邮电出版社
作者:(美)萨特 亚历山德莱斯库
出品人:
页数:220
译者:
出版时间:2005-9
价格:42.00元
装帧:平装
isbn号码:9787115137708
丛书系列:图灵原版计算机科学系列
图书标签:
  • C++
  • C/C++
  • C++编程规范
  • 程序设计
  • 计算机
  • 编程规范
  • 编程
  • 拥有
  • C++
  • 编程规范
  • 代码风格
  • 软件工程
  • 可读性
  • 维护性
  • 最佳实践
  • 编程指南
  • 代码质量
  • C++开发
  • 代码规范
想要找书就要到 小美书屋
立刻按 ctrl+D收藏本页
你会得到大惊喜!!

具体描述

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

  本书适合于各层次C++程序员,也可作为高等院校C++课程的教学参考书。

作者简介

Herb Sutter,ISO C++标准委员会主席,C++ Users Journal杂志特邀编辑和专栏作家;他目前在微软公司领导NET环境下C++浯言扩展的设计工作除本书外.他还撰写了三本广受赞誉的图书:Exceptional C++ Style、Exceptional C++和More Exceptional C++。 .

Andrei Alexandrescu,世界顶级的C++专家.“C++ Users Journal杂志的专栏作家,他的Modem C++ Design—书曾荣获2001年最佳C++图朽称号.书中所开发的Loki已经成为最负盛名的C++程序库之一。

目录信息

Organizational and Policy Issues 1
0. Don't sweat the small stuff. (Or: Know what not to standardize.) 2
1. Compile cleanly at high warning levels. 4
2. Use an automated build system. 7
3. Use a version control system. 8
4. Invest in code reviews. 9
Design Style  11
5. Give one entity one cohesive responsibility. 12
6. Correctness, simplicity, and clarity come first. 13
7. Know when and how to code for scalability. 14
8. Don't optimize prematurely. 16
9. Don't pessimize prematurely. 18
10. Minimize global and shared data. 19
11. Hide information. 20
12. Know when and how to code for concurrency. 21
13. Ensure resources are owned by objects. Use explicit RAII and smart pointers. 24
Coding Style 27
14. Prefer compile- and link-time errors to run-time errors. 28
15. Use const proactively. 30
16. Avoid macros. 32
17. Avoid magic numbers. 34
18. Declare variables as locally as possible. 35
19. Always initialize variables. 36
20. Avoid long functions. Avoid deep nesting. 38
21. Avoid initialization dependencies across compilation units.  39
22. Minimize definitional dependencies. Avoid cyclic dependencies. 40
23. Make header files self-sufficient. 42
24. Always write internal #include guards. Never write external #include guards. 43
Functions and Operators 45
25. Take parameters appropriately by value, (smart) pointer, or reference. 46
26. Preserve natural semantics for overloaded operators. 47
27. Prefer the canonical forms of arithmetic and assignment operators. 48
28. Prefer the canonical form of + + and --. Prefer calling the prefix forms. 50
29. Consider overloading to avoid implicit type conversions. 51
30. Avoid overloading &&, ¢ò, or, (comma). 52
31. Don't write code that depends on the order of evaluation of function arguments. 54

Class Design and Inheritance 55
32. Be clear what kind of class you' re writing. 56
33. Prefer minimal classes to monolithic classes. 57
34. Prefer composition to inheritance. 58
35. Avoid inheriting from classes that were not designed to be base classes. 60
36. Prefer providing abstract interfaces. 62
37. Public inheritance is substitutability. Inherit, not to reuse, but to be reused 64
38. Practice safe overriding. 66
39. Consider making virtual functions nonpublic, and public functions nonvirtual. 68
40. Avoid providing implicit conversions. 70
41. Make data members private, except in behaviorless aggregates (C-style structs). 72
42. Don't give away your internals. 74
43. Pimpl judiciously. 76
44. Prefer writing nonmember nonfriend functions. 79
45. Always provide new and delete together. 80
46. If you provide any class-specific new, provide all of the standard forms (plain, in-place, and nothrow). 82
Construction, Destruction, and Copying 85
47. Define and initialize member variables in the same order. 86
48. Prefer initialization to assignment in constructors. 87
49. Avoid calling virtual functions in constructors and destructors. 88
50. Make base class destructors public and virtual, or protected and nonvirtual. 90
51. Destructors, deallocation, and swap never fail. 92
52. Copy and destroy consistently. 93
53. Explicitly enable or disable copying. 95
54. Avoid slicing. Consider Clone instead of copying in base classes. 96
55. Prefer the canonical form of assignment. 99
56. Whenever it makes sense, provide a no-fail swap (and provide it correctly). 100
Namespaces and Modules 103
57. Keep a type and its nonmember function interface in the same namespace. 104
58. Keep types and functions in separate namespaces unless they're specifically intended to work together. 106
59. Don't write namespace usings in a header file or before an #include. 108
60. Avoid allocating and deallocating memory in different modules. 111
61. Don't define entities with linkage in a header file. 112
62. Don't allow exceptions to propagate across module boundaries. 114
63. Use sufficiently portable types in a module's interface. 116
Templates and Genericity 119
64. Blend static and dynamic polymorphism judiciously. 120
65. Customize intentionally and explicitly. 122
66. Don't specialize function templates. 126
67. Don't write unintentionally nongeneric code. 128
Error Handling and Exceptions 129
68. Assert liberally to document internal assumptions and invariants. 130
69. Establish a rational error handling policy, and follow it strictly. 132
70. Distinguish between errors and non-errors. 134
71. Design and write error-safe code. 137
72. Prefer to use exceptions to report errors. 140
73. Throw by value, catch by reference. 144
74. Report, handle, and translate errors appropriately. 145
75. Avoid exception specifications. 146
STL: containers 149
76. Use vector by default. Otherwise, choose an appropriate container. 150
77. Use vector and string instead of arrays. 152
78. Use vector (and string::c_str) to exchange data with non-C++ APIs. 153
79. Store only values and smart pointers in containers. 154
80. Prefer pushback to other ways of expanding a sequence. 155
81. Prefer range operations to single-element operations. 156
82. Use the accepted idioms to really shrink capacity and really erase elements. 157
STL: Algorithms 159
83. Use a checked STL implementation. 160
84. Prefer algorithm calls to handwritten loops. 162
85. Use the right STL search algorithm. 165
86. Use the right STL sort algorithm. 166
87. Make predicates pure functions. 68
88. Prefer function objects over functions as algorithm and comparer arguments. 170
89. Write function objects correctly. 172
Type Safety 173
90. Avoid type switching; prefer polymorphism. 174
91. Rely on types, not on representations. 176
92. Avoid using reinterpret_cast. 177
93. Avoid using static_cast on pointers. 178
94. Avoid casting away const. 179
95. Don't use C-style casts. 180
96. Don't memcpy or memcmp non-PODs. 182
97. Don't use unions to reinterpret representation. 183
98. Don't use varargs (ellipsis). 184
99. Don't use invalid objects. Don't use unsafe functions. 185
100. Don't treat arrays polymorphically. 186
Bibliography 187
Summary of Summaries 195
Index 209
· · · · · · (收起)

读后感

评分

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

评分

其实我想看个实践,别人的方法。 副标题叫Best Practices,但是Practice很少。 这本书的内容都缺少实践,站着说话不腰疼,对于我这样的菜鸟感觉是这样的。 比如这条,比如有个巨类: CHugeClass { function0(); function1(); function2(); function3(); .... f...  

评分

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

评分

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

评分

我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看过了 我看...  

用户评价

评分

现代c++程序员必读。

评分

技巧比较实用

评分

现代c++程序员必读。

评分

技巧比较实用

评分

现代c++程序员必读。

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

© 2025 book.quotespace.org All Rights Reserved. 小美书屋 版权所有