C++/C编程高质量指南:编程风格和最佳实践

需积分: 30 13 下载量 162 浏览量 更新于2024-07-17 收藏 320KB PDF 举报
高质量C编程指南 本资源为林锐博士编写的《高质量C++/C编程指南》,版本号为1.0,于2001年7月24日完成。该指南涵盖了C++/C编程的多个方面,旨在帮助程序员编写高质量的C++/C程序。 **文件结构** * 版权和版本的声明:在文件开头声明版权和版本信息,以便于维护和更新。 * 头文件的结构:头文件应包括版权信息、版本信息、头文件的依赖关系等。 * 定义文件的结构:定义文件应包括函数的声明、变量的声明、宏定义等。 * 头文件的作用:头文件用于提供函数和变量的声明,减少编译时间和空间占用。 * 目录结构:目录结构应遵循一定的规则,易于程序员查找和维护文件。 **程序的版式** * 空行:在程序中使用空行以提高可读性和可维护性。 * 代码行:代码行应保持一定的长度,避免长行拆分。 * 代码行内的空格:使用适当的空格以提高代码的可读性。 * 对齐:使用对齐以提高代码的可读性和可维护性。 * 长行拆分:长行应拆分成多行,以提高代码的可读性和可维护性。 * 修饰符的位置:修饰符应放在合适的位置,以提高代码的可读性和可维护性。 * 注释:注释应使用适当,以提高代码的可读性和可维护性。 * 类的版式:类的版式应遵循一定的规则,以提高代码的可读性和可维护性。 **命名规则** * 共性规则:命名应遵循一定的规则,以提高代码的可读性和可维护性。 * 简单的WINDOWS应用程序命名规则:Windows应用程序的命名规则应遵循一定的规则,以提高代码的可读性和可维护性。 * 简单的UNIX应用程序命名规则:UNIX应用程序的命名规则应遵循一定的规则,以提高代码的可读性和可维护性。 **表达式和基本语句** * 运算符的优先级:运算符的优先级应遵循一定的规则,以避免歧义。 * 复合表达式:复合表达式应遵循一定的规则,以提高代码的可读性和可维护性。 * IF语句:IF语句应遵循一定的规则,以提高代码的可读性和可维护性。 * 循环语句的效率:循环语句的效率应遵循一定的规则,以提高代码的执行效率。 * FOR语句的循环控制变量:FOR语句的循环控制变量应遵循一定的规则,以提高代码的可读性和可维护性。 * SWITCH语句:SWITCH语句应遵循一定的规则,以提高代码的可读性和可维护性。 * GOTO语句:GOTO语句应遵循一定的规则,以提高代码的可读性和可维护性。 **常量** * 为什么需要常量:常量用于提高代码的可读性和可维护性。 * CONST与#DEFINE的比较:CONST和#DEFINE都是用于定义常量的,但它们有所区别。 * 常量定义规则:常量定义规则应遵循一定的规则,以提高代码的可读性和可维护性。 * 类中的常量:类中的常量应遵循一定的规则,以提高代码的可读性和可维护性。 **函数设计** * 参数的规则:函数的参数应遵循一定的规则,以提高代码的可读性和可维护性。 * 返回值的规则:函数的返回值应遵循一定的规则,以提高代码的可读性和可维护性。 * 函数内部实现的规则:函数内部实现应遵循一定的规则,以提高代码的可读性和可维护性。 * 其他建议:函数设计应遵循一定的规则,以提高代码的可读性和可维护性。 * 使用断言:断言用于检查函数的输入参数,以提高代码的可读性和可维护性。 * 引用与指针的比较:引用和指针都是用于指向变量的,但它们有所区别。 **内存管理** * 内存分配方式:内存分配方式应遵循一定的规则,以提高代码的可读性和可维护性。 * 常见的内存错误及其对策:内存错误应遵循一定的规则,以提高代码的可读性和可维护性。 * 指针与数组的对比:指针和数组都是用于存储数据的,但它们有所区别。 * 指针参数是如何传递内存的?:指针参数应遵循一定的规则,以提高代码的可读性和可维护性。 * FREE和DELETE把指针怎么啦?:FREE和DELETE都是用于释放内存的,但它们有所区别。 * 动态内存会被自动释放吗?:动态内存不会被自动释放,需要手动释放。 * 杜绝“野指针”:“野指针”是指未被初始化或已被释放的指针,应避免使用“野指针”。 * 有了MALLOC/FREE为什么还要NEW/DELETE?:MALLOC/FREE和NEW/DELETE都是用于内存管理的,但它们有所区别。 * 内存耗尽怎么办?:内存耗尽时应采取相应的措施,以避免程序崩溃。 * MALLOC/FREE的使用要点:MALLOC/FREE的使用应遵循一定的规则,以提高代码的可读性和可维护性。
2009-12-15 上传
高质量C++编程指南(林锐)DOC版和pdf的合集 目 录 前 言 6 第1章 文件结构 11 1.1 版权和版本的声明 11 1.2 头文件的结构 12 1.3 定义文件的结构 13 1.4 头文件的作用 13 1.5 目录结构 14 第2章 程序的版式 15 2.1 空行 15 2.2 代码行 16 2.3 代码行内的空格 17 2.4 对齐 18 2.5 长行拆分 19 2.6 修饰符的位置 19 2.7 注释 20 2.8 类的版式 21 第3章 命名规则 22 3.1 共性规则 22 3.2 简单的WINDOWS应用程序命名规则 23 3.3 简单的UNIX应用程序命名规则 25 第4章 表达式和基本语句 26 4.1 运算符的优先级 26 4.2 复合表达式 27 4.3 IF 语句 27 4.4 循环语句的效率 29 4.5 FOR 语句的循环控制变量 30 4.6 SWITCH语句 30 4.7 GOTO语句 31 第5章 常量 33 5.1 为什么需要常量 33 5.2 CONST 与 #DEFINE的比较 33 5.3 常量定义规则 33 5.4 类中的常量 34 第6章 函数设计 36 6.1 参数的规则 36 6.2 返回值的规则 37 6.3 函数内部实现的规则 39 6.4 其它建议 40 6.5 使用断言 41 6.6 引用与指针的比较 42 第7章 内存管理 44 7.1内存分配方式 44 7.2常见的内存错误及其对策 44 7.3指针与数组的对比 45 7.4指针参数是如何传递内存的? 47 7.5 FREE和DELETE把指针怎么啦? 50 7.6 动态内存会被自动释放吗? 50 7.7 杜绝“野指针” 51 7.8 有了MALLOC/FREE为什么还要NEW/DELETE ? 52 7.9 内存耗尽怎么办? 53 7.10 MALLOC/FREE 的使用要点 54 7.11 NEW/DELETE 的使用要点 55 7.12 一些心得体会 56 第8章 C++函数的高级特性 57 8.1 函数重载的概念 57 8.2 成员函数的重载、覆盖与隐藏 60 8.3 参数的缺省值 63 8.4 运算符重载 64 8.5 函数内联 65 8.6 一些心得体会 68 第9章 类的构造函数、析构函数与赋值函数 69 9.1 构造函数与析构函数的起源 69 9.2 构造函数的初始化表 70 9.3 构造和析构的次序 72 9.4 示例:类STRING的构造函数与析构函数 72 9.5 不要轻视拷贝构造函数与赋值函数 73 9.6 示例:类STRING的拷贝构造函数与赋值函数 73 9.7 偷懒的办法处理拷贝构造函数与赋值函数 75 9.8 如何在派生类中实现类的基本函数 75 9.9 一些心得体会 77 第10章 类的继承与组合 78 10.1 继承 78 10.2 组合 80 第11章 其它编程经验 82 11.1 使用CONST提高函数的健壮性 82 11.2 提高程序的效率 84 11.3 一些有益的建议 85 参考文献 87 附录A :C++/C代码审查表 88 附录B :C++/C试题 93 附录C :C++/C试题的答案与评分标准 97