CC++编程 高质量c/c++程序设计
### CC++编程 高质量C/C++程序设计 #### 前言 本文档由林锐博士撰写,完成于2001年7月24日。该文档旨在指导C/C++开发者如何编写高质量的程序代码,通过一系列的规范和实践来提升软件产品的质量和可维护性。 #### 第1章 文件结构 1. **版权和版本的声明**:明确软件的版权信息和当前版本号,确保代码的合法性和可追溯性。 2. **头文件的结构**:规定了头文件的组织形式,如宏定义、类型定义、接口声明等。 3. **定义文件的结构**:规定了源文件中的代码组织形式,包括预处理指令、全局变量声明、函数定义等。 4. **头文件的作用**:解释头文件的目的,包括接口声明、类型定义等功能。 5. **目录结构**:描述项目中各个文件和目录的组织方式,便于管理和查找。 #### 第2章 程序的版式 1. **空行**:规定在代码中使用空行以提高可读性的方式。 2. **代码行**:定义代码行的最大长度、缩进等格式规范。 3. **代码行内的空格**:指定代码行内空格的使用规则,如操作符前后是否需要空格等。 4. **对齐**:规定如何对齐代码块,提高代码的整洁度。 5. **长行拆分**:说明如何将过长的代码行进行合理拆分,保持良好的视觉效果。 6. **修饰符的位置**:定义类或结构体中修饰符(如public、private)的位置。 7. **注释**:讲解注释的重要性以及如何编写有效的注释。 8. **类的版式**:说明类的结构和布局,如成员变量与成员函数的排列顺序等。 #### 第3章 命名规则 1. **共性规则**:提出通用的命名原则,如使用驼峰命名法等。 2. **简单的Windows应用程序命名规则**:为Windows平台下的程序提供具体的命名指南。 3. **简单的Unix应用程序命名规则**:为Unix平台下的程序提供特定的命名指南。 #### 第4章 表达式和基本语句 1. **运算符的优先级**:介绍不同运算符的优先级规则,避免因优先级理解错误导致的逻辑问题。 2. **复合表达式**:解释如何正确使用复合表达式来简化代码。 3. **if语句**:讲解if语句的使用方法及注意事项,如条件判断的清晰表达。 4. **循环语句的效率**:探讨不同类型的循环语句(如for、while)的性能差异,并给出优化建议。 5. **for语句的循环控制变量**:说明循环控制变量的选择和使用技巧。 6. **switch语句**:讲解switch语句的使用场景和编写规范。 7. **goto语句**:分析goto语句的优缺点,以及何时可以适当使用。 #### 第5章 常量 1. **为什么需要常量**:解释使用常量而非硬编码数值的好处。 2. **const与#define的比较**:对比`const`关键字和`#define`宏定义的差异。 3. **常量定义规则**:给出常量定义时应遵循的规范。 4. **类中的常量**:说明在类中如何使用常量。 #### 第6章 函数设计 1. **参数的规则**:定义函数参数的设计原则,包括参数类型、数量等方面的考虑。 2. **返回值的规则**:解释如何选择合适的返回值类型,以及何时应该使用异常处理。 3. **函数内部实现的规则**:规定函数内部逻辑的组织方式。 4. **其它建议**:提供额外的函数设计建议。 5. **使用断言**:介绍如何利用断言来增强程序的健壮性。 6. **引用与指针的比较**:对比引用和指针的特点及其适用场景。 #### 第7章 内存管理 1. **内存分配方式**:概述不同的内存分配机制,如栈分配和堆分配的区别。 2. **常见的内存错误及其对策**:列举常见的内存错误,并给出相应的解决策略。 3. **指针与数组的对比**:分析指针和数组之间的联系与区别。 4. **指针参数是如何传递内存的**:解释函数调用过程中指针参数如何传递数据。 5. **free和delete把指针怎么啦**:讨论使用`free`和`delete`释放内存后,指针的状态变化。 6. **动态内存会被自动释放吗**:澄清关于动态内存回收的误解。 7. **杜绝“野指针”**:强调如何避免使用已释放内存地址的问题。 8. **有了malloc/free为什么还要new/delete**:阐述`malloc/free`与`new/delete`的不同应用场景。 9. **内存耗尽怎么办**:提供应对内存耗尽情况的方法。 10. **malloc/free的使用要点**:总结使用`malloc/free`时需要注意的关键点。 11. **new/delete的使用要点**:概括使用`new/delete`时的重要事项。 12. **一些心得体会**:分享作者在内存管理方面的实践经验。 #### 第8章 C++函数的高级特性 1. **函数重载的概念**:介绍函数重载的基本原理。 2. **成员函数的重载、覆盖与隐藏**:区分成员函数重载、覆盖与隐藏的区别。 3. **参数的缺省值**:说明如何为函数参数设置默认值。 4. **运算符重载**:讲解运算符重载的规则和应用场景。 5. **函数内联**:解释内联函数的作用和限制。 6. **一些心得体会**:分享作者在函数设计方面的个人见解。 #### 第9章 类的构造函数、析构函数与赋值函数 1. **构造函数与析构函数的起源**:回顾构造函数和析构函数的历史背景。 2. **构造函数的初始化表**:说明构造函数中使用初始化列表的重要性。 3. **构造和析构的次序**:解释对象构造和析构过程中的顺序问题。 4. **示例:类String的构造函数与析构函数**:通过具体示例展示构造函数和析构函数的编写方法。 5. **不要轻视拷贝构造函数与赋值函数**:强调拷贝构造函数和赋值函数的重要性。 6. **示例:类String的拷贝构造函数与赋值函数**:通过示例说明拷贝构造函数和赋值函数的具体实现。 7. **偷懒的办法处理拷贝构造函数与赋值函数**:提供简化的实现方法。 8. **如何在派生类中实现类的基本函数**:讲解派生类中重写基类构造函数和析构函数的方法。 9. **一些心得体会**:分享作者关于构造函数和析构函数的心得体会。 #### 第10章 类的继承与组合 1. **继承**:探讨继承的概念和应用场景。 2. **组合**:介绍组合的概念及其与继承的区别。 #### 第11章 其它编程经验 1. **使用const提高函数的健壮性**:说明如何利用`const`关键字来增强函数的健壮性。 2. **提高程序的效率**:提供提高程序运行效率的方法。 3. **一些有益的建议**:给出一些实用的编程建议。 #### 结论 《高质量C/C++程序设计》是一份宝贵的资源,对于C/C++开发者来说,它不仅提供了详尽的编程规范,还分享了许多宝贵的实践经验。通过遵循这些指南,开发者可以编写出更加健壮、易于维护的代码。无论是初学者还是经验丰富的开发者,都能从中获得有价值的信息。
- 粉丝: 0
- 资源: 17
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助