高质量C++/C编程指南 - 林锐

需积分: 8 0 下载量 53 浏览量 更新于2024-11-27 收藏 326KB PDF 举报
"《高质量编程指南》是林锐博士撰写的一本关于C++/C编程实践的书籍,旨在提升程序员的编程质量和效率。书中详细涵盖了编程规范、命名规则、表达式与基本语句的处理、常量的使用、函数设计、内存管理等多个方面,旨在帮助开发者遵循最佳实践,编写出高效、可读性强且易于维护的代码。" 1. **文件结构** - 版权声明和版本信息是每个专业文档的基础,确保读者了解内容的法律权益和最新状态。 - 头文件的结构和定义文件的结构对于模块化编程至关重要,它们定义了代码的组织方式和接口。 - 头文件的作用是包含函数声明、常量定义等,便于代码复用和编译优化。 - 目录结构的合理规划有助于代码的管理和查找。 2. **程序的版式** - 程序的版式直接影响代码的可读性和团队协作,包括空行的使用、代码行的长度、空格的插入、对齐方式、长行拆分、修饰符位置和注释的编写,都应遵循一致的规范。 3. **命名规则** - 共性规则涉及所有类型的标识符,如变量、函数、类等,应遵循一致性、清晰性的原则。 - 对于特定平台(如Windows或UNIX)的应用程序,可能有特定的命名约定以适应系统习惯。 4. **表达式和基本语句** - 运算符的优先级是避免混淆和错误的关键,理解并正确使用可以提高代码的准确性。 - IF语句、循环语句(如FOR、WHILE)的效率优化对于性能敏感的程序至关重要。 - FOR语句中的循环控制变量应谨慎处理,避免副作用。 - SWITCH语句和GOTO语句的使用需考虑程序的控制流和可维护性。 5. **常量** - 常量的使用可以增加代码的稳定性,减少错误修改的机会。 - CONST与#DEFINE的比较涉及常量在编译时和运行时的作用,以及类型安全问题。 - 类中的常量设计涉及到封装和数据保护。 6. **函数设计** - 参数规则和返回值的考虑是函数设计的核心,应避免不必要的副作用和过度复杂化。 - 使用断言可以帮助在开发阶段发现潜在的逻辑错误。 - 引用与指针的选择会影响函数的调用方式和内存管理。 7. **内存管理** - 内存分配方式(如malloc/free、new/delete)的不同,决定了内存生命周期的控制方式。 - 常见的内存错误如内存泄漏、悬挂指针等需要通过良好的编程习惯来预防。 - 指针参数传递内存的方式需要理解,以防止内存异常。 - 关于free和delete操作后指针的处理,应确保指针不再被误用。 - 动态内存的自动释放不总是发生,程序员应负责管理内存生命周期。 - 避免“野指针”是保证程序稳定性的关键。 - new/delete与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
2011-10-28 上传
目 录 前 言6 第1 章 文件结构 1.1 版权和版本的声明. 1.2 头文件的结构. 1.3 定义文件的结构. 1.4 头文件的作用. 1.5 目录结构. 第2 章 程序的版式 2.1 空行. 2.2 代码行. 2.3 代码行内的空格. 2.4 对齐. 2.5 长行拆分. 2.6 修饰符的位置. 2.7 注释. 2.8 类的版式. 第3 章 命名规则 3.1 共性规则. 3.2 简单的WINDOWS 应用程序命名规则. 3.3 简单的UNIX 应用程序命名规则 第4 章 表达式和基本语句 4.1 运算符的优先级. 4.2 复合表达式. 4.3 IF 语句 4.4 循环语句的效率. 4.5 FOR 语句的循环控制变量. 4.6 SWITCH 语句. 4.7 GOTO 语句. 第5 章 常量 5.1 为什么需要常量. 5.2 CONST 与 #DEFINE 的比较. 5.3 常量定义规则. 5.4 类中的常量. 第6 章 函数设计 高质量C++/C 编程指南,v 1.0 2001 Page 4 of 101 6.1 参数的规则. 6.2 返回值的规则. 6.3 函数内部实现的规则. 6.4 其它建议. 6.5 使用断言. 6.6 引用与指针的比较. 第7 章 内存管理 7.1 内存分配方式 7.2 常见的内存错误及其对策 7.3 指针与数组的对比 7.4 指针参数是如何传递内存的? 7.5 FREE 和DELETE 把指针怎么啦? 7.6 动态内存会被自动释放吗?. 7.7 杜绝“野指针”. 7.8 有了MALLOC/FREE 为什么还要NEW/DELETE ?. 7.9 内存耗尽怎么办?. 7.10 MALLOC/FREE 的使用要点 7.11 NEW/DELETE 的使用要点. 7.12 一些心得体会 第8 章 C++函数的高级特性 8.1 函数重载的概念. 8.2 成员函数的重载、覆盖与隐藏. 8.3 参数的缺省值. 8.4 运算符重载. 8.5 函数内联. 8.6 一些心得体会. 第9 章 类的构造函数、析构函数与赋值函数 9.1 构造函数与析构函数的起源. 9.2 构造函数的初始化表. 9.3 构造和析构的次序. 9.4 示例:类STRING 的构造函数与析构函数 9.5 不要轻视拷贝构造函数与赋值函数. 9.6 示例:类STRING 的拷贝构造函数与赋值函数 9.7 偷懒的办法处理拷贝构造函数与赋值函数. 9.8 如何在派生类中实现类的基本函数. 9.9 一些心得体会. 第10 章 类的继承与组合. 高质量C++/C 编程指南,v 1.0 2001 Page 5 of 101 10.1 继承 10.2 组合 第11 章 其它编程经验. 11.1 使用CONST 提高函数的健壮性 11.2 提高程序的效率 11.3 一些有益的建议 参考文献 附录A :C++/C 代码审查表. 附录B :C++/C 试题. 附录C :C++/C 试题的答案与评分标准.