⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 index.htm

📁 C++程序编写规范,适合C++中级读者
💻 HTM
字号:
<html>
<head>
<title>C++编程规范(中文版)</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#FFFFFF" text="#000000">
<p align="center"><b><font size="5" color="#004080">C++编程规范(中文版)</font></b></p>
<p align="center"><b><font size="4" color="#004080">(C++ Coding Standards: 101 Rules, Guidelines, and Best Practices)</font></b></p>

<p><b>组织及策略上的问题(Organizational and Policy Issues)</b></p>
<p>- <a href="Item_000.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_000.htm">0. 不拘小节(或:了解什么不需要被规范化)。</a></p>
<p>- <a href="Item_001.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_001.htm">1. 在高警告级别下干净地编译。</a></p>
<p>- <a href="Item_002.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_002.htm">2. 使用自动化的构建(build)系统</a></p>
<p>- <a href="Item_003.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_003.htm">3. 使用版本控制系统(version control system)。</a></p>
<p>- <a href="Item_004.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_004.htm">4. 在代码复查上投资。</a></p>
<p><b>设计风格(Design Style)</b></p>
<p>- <a href="Item_005.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_005.htm">5. 给每一个实体分配一份内聚的职责。</a></p>
<p>- <a href="Item_006.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_006.htm">6. 以正确,简单,清晰为上。</a></p>
<p>- <a href="Item_007.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_007.htm">7. 了解何时及如何为可伸缩性编写代码。</a></p>
<p>- <a href="Item_008.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_008.htm">8. 不要过早地优化。</a></p>
<p>- <a href="Item_009.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_009.htm">9. 不要过早地退而求次。</a></p>
<p>- <a href="Item_010.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_010.htm">10. 将全局和共享的数据减至最少。</a></p>
<p>- <a href="Item_011.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_011.htm">11. 隐藏信息。</a></p>
<p>- <a href="Item_012.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_012.htm">12. 了解何时及如何为并发性编写代码。</a></p>
<p>- <a href="Item_013.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_013.htm">13. 确保资源为对象所占有。使用显式的RAII和智能指针。</a></p>
<p><b>编程风格(Coding Style)</b></p>
<p>- <a href="Item_014.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_014.htm">14. 宁可在编译和链接时出错也不要在运行时出错。</a></p>
<p>- <a href="Item_015.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_015.htm">15. 主动使用const。</a></p>
<p>- <a href="Item_016.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_016.htm">16. 避免使用宏。</a></p>
<p>- <a href="Item_017.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_017.htm">17. 避免使用魔数(magic numbers)。</a></p>
<p>- <a href="Item_018.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_018.htm">18. 尽可能局部地声明变量。</a></p>
<p>- <a href="Item_019.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_019.htm">19. 始终初始化变量。</a></p>
<p>- <a href="Item_020.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_020.htm">20. 避免太长的函数。避免太深的嵌套。</a></p>
<p>- <a href="Item_021.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_021.htm">21. 避免不同的编译单元在初始化过程中的依赖关系。</a></p>
<p>- <a href="Item_022.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_022.htm">22. 将定义时的依赖性降至最低。避免循环依赖性。</a></p>
<p>- <a href="Item_023.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_023.htm">23. 保证头文件的自足性(Make header files self-sufficient)。</a></p>
<p>- <a href="Item_024.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_024.htm">24. 始终用内部#include防护哨。绝对不要用外部#include防护哨。</a></p>
<p><b>函数与操作符(Functions and Operators)</b></p>
<p>- <a href="Item_025.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_025.htm">25. 通过值,(智能)指针,或引用适当地取得参数。</a></p>
<p>- <a href="Item_026.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_026.htm">26. 在重载操作符时,要保留被重载操作符的自然语义。</a></p>
<p>- <a href="Item_027.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_027.htm">27. 最好是保持算术和赋值运算符的标准形式。</a></p>
<p>- <a href="Item_028.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_028.htm">28. 最好是保持标准形式的++和--。最好是调用前缀的形式。</a></p>
<p>- <a href="Item_029.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_029.htm">29. 考虑通过重载来避免隐式的类型转换。</a></p>
<p>- <a href="Item_030.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_030.htm">30. 避免重载&&, ||, 或, (逗号)。</a></p>
<p>- <a href="Item_031.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_031.htm">31. 不要编写对函数参数的求值顺序有依赖性的代码。</a></p>
<p><b>名字空间与模块(Namespaces and Modules)</b></p>
<p>- <a href="Item_057.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_057.htm">57. 把类型和它的非成员函数接口放在同一个名字空间中。</a></p>
<p>- <a href="Item_058.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_058.htm">58. 除非有意让类型和函数协作,否则把它们放在单独的名字空间中。</a></p>
<p>- <a href="javascript:if(confirm('http://www.gesoftfactory.com/developer/cppcodingstandards/Item_059.htm  \n\nThis file was not retrieved by Teleport Pro, because it was unavailable, or its retrieval was aborted, or the project was stopped too soon.  \n\nDo you want to open it from the server?'))window.location='http://www.gesoftfactory.com/developer/cppcodingstandards/Item_059.htm'" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_059.htm">59. 不要在头文件中或#include语句之前写名字空间层级的using。</a></p>
<p>- <a href="Item_060.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_060.htm">60. 避免在不同的模块中分配和释放内存。</a></p>
<p>- <a href="Item_061.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_061.htm">61. 不要在头文件中定义具有链接属性的实体(entities with linkage)。</a></p>
<p>- <a href="Item_062.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_062.htm">62. 不要让异常在传递时跨越模块的边界。</a></p>
<p>- <a href="Item_063.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_063.htm">63. 在模块的接口中使用可移植的类型。</a></p>
<p><b>错误处理与异常(Error Handling and Exceptions)</b></p>
<p>- <a href="Item_068.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_068.htm">68. 大量使用断言来说明内部的假设和不变性。</a></p>
<p>- <a href="Item_069.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_069.htm">69. 设立一套合理的错误处理策略,并严格遵循。</a></p>
<p>- <a href="Item_070.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_070.htm">70. 区分错误与非错误。</a></p>
<p>- <a href="Item_071.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_071.htm">71. 设计并编写能够安全地处理错误的代码。</a></p>
<p>- <a href="Item_072.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_072.htm">72. 尽量用异常来报告错误。</a></p>
<p>- <a href="Item_073.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_073.htm">73. 抛出值,捕获引用。</a></p>
<p>- <a href="Item_074.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_074.htm">74. 适当地报告,处理并转换错误。</a></p>
<p>- <a href="Item_075.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_075.htm">75. 避免异常规格(exception specifications)。</a></p>
<p><b>STL容器(STL: Containers)</b></p>
<p>- <a href="Item_076.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_076.htm">76. 默认情况下使用vector。否则选择其它合适的容器。</a></p>
<p>- <a href="Item_077.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_077.htm">77. 用vector和string取代数组。</a></p>
<p>- <a href="Item_078.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_078.htm">78. 使用vector(以及string::c_str)来和非C++ API交换数据。</a></p>
<p>- <a href="Item_079.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_079.htm">79. 仅在容器中存储值和智能指针。</a></p>
<p>- <a href="Item_080.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_080.htm">80. 与其它方法相比,要尽量使用push_back来扩大容器。</a></p>
<p>- <a href="Item_081.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_081.htm">81. 与单元素操作相比,要尽量使用区间操作。</a></p>
<p>- <a href="Item_082.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_082.htm">82. 使用公认的惯用法来真正地缩小容量以及真正地删除元素。</a></p>
<p><b>STL算法(STL: Algorithms)</b></p>
<p>- <a href="Item_083.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_083.htm">83. 使用一个带检查的(checked)STL实现。</a></p>
<p>- <a href="Item_084.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_084.htm">84. 与手工编写的循环相比,要尽量调用STL算法。</a></p>
<p>- <a href="Item_085.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_085.htm">85. 使用正确的STL查找算法。</a></p>
<p>- <a href="Item_086.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_086.htm">86. 使用正确的STL排序算法。</a></p>
<p>- <a href="Item_087.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_087.htm">87. 使predicate成为纯函数(pure function)。</a></p>
<p>- <a href="Item_088.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_088.htm">88. 在用作算法和比较器(comparer)时,要优先用函数对象来代替函数。</a></p>
<p>- <a href="Item_089.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_089.htm">89. 正确地编写函数对象(Function Object)。</a></p>
<p><b>类型安全性(Type Safety)</b></p>
<p>- <a href="Item_090.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_090.htm">90. 避免类型选择(type switching);尽量使用多态。</a></p>
<p>- <a href="Item_091.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_091.htm">91. 依赖于对象类型,而不要依赖于对象的表示方法。</a></p>
<p>- <a href="Item_092.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_092.htm">92. 避免使用reinterpret_cast。</a></p>
<p>- <a href="Item_093.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_093.htm">93. 避免用static_cast来强制转换指针类型。</a></p>
<p>- <a href="Item_094.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_094.htm">94. 避免强制去除const。</a></p>
<p>- <a href="Item_095.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_095.htm">95. 不要用C风格的强制类型转换。</a></p>
<p>- <a href="Item_096.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_096.htm">96. 不要对非POD类型使用memcpy或memcmp。</a></p>
<p>- <a href="Item_097.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_097.htm">97. 不要用union来重新解释数据。</a></p>
<p>- <a href="Item_098.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_098.htm">98. 不要使用varargs(省略号)。</a></p>
<p>- <a href="Item_099.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_099.htm">99. 不要使用无效的对象。不要使用不安全的函数。</a></p>
<p>- <a href="Item_100.htm" tppabs="http://www.gesoftfactory.com/developer/cppcodingstandards/Item_100.htm">100. 不要以多态方式处理数组。</a></p>

</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -