课程简介
课程内容:课程围绕“字符串与内存处理”这一问题,通过一系列环环相扣的有趣的故事场景,揭示C/C++语言中容易让人犯错或是误用的“陷阱”,并从逐步的问题解决中演化出方案、总结出应对规则。
目标收益
课程中的理论和经验来自于对大量开发人员常犯错误与所遇问题的归纳、分析与总结。并有针对性的给出解决方法。学员经过课程已经可以充分理解在特定的场景下如何提升代码的质量,并可以根据课程中总结的规则,对自己的代码进行检查,以培养良好的编码风格,和严谨的编码习惯。
培训对象
各类IT/软件企业和研发机构的软件设计师、程序员。对于对自己的代码不自信,常常被Bug折磨的人非常有效。
课程大纲
编写高质量C代码 (3~4小时) |
内容一:什么样的代码是高质量的代码 1.理解高质量代码需要考虑的各种因素 2.尝试结合各种因素编写一个高质量的strcpy() 3.这样的strcpy()可能会遇到什么样的问题 4.该如何一步步解决这些问题 内容二:利用现有工具提升代码的品质 1.如何保证参数的合法性 2.如何提高程序的健壮性 3.如何优化代码,减少冗余逻辑 内容三:如何确保代码的安全性 1.什么样的代码会有安全问题 2.安全问题可能造成的危害 3.什么是缓冲区溢出,原理是什么 4.如何避免/应对缓冲区溢出 内容四:如何检查/避免代码中的内存泄露 1.内存泄露该如何检查 2.应对内存泄露的方法 3.权衡,内存泄露时应该考虑的对策 内容五:杂项 1. 高阶参数检查 2. 局部变量不初始化的危害 |
编写高质量C++代码(3~4小时) |
内容六:将代码从C过渡到C++ 1.C++中高质量代码需要考虑的问题 2.C++中的内存泄露与C中的区别 3.如何在C++中防止数组形式的内存泄露 内容七:C++字符串类中鲜为人知的秘密 1. 为什么有时候需要重载拷贝构造函数/赋值运算符 2. 该怎么确定赋值运算符的返回类型 3. 为什么要检查自赋值的情况 4. 避免传回C++类中的内部handler 内容八:高效C++语言,避免C++中的陷阱 1. 区别对待指针和引用 2. 为什么需要使用标准的转型操作符 3. 不要以多态的形式处理数组 4. ++操作符的前后置区别 5. 内存的分配与释放机制 内容九:如何正确的处理C++中的异常 1. 利用析构函数避免资源泄露(智能指针) 2. 如何高效的抛出/捕获异常 3. 为什么在构造函数中阻止资源泄露 4. 为什么在析构函数中要阻止异常流出 |
编写高质量C代码 (3~4小时) 内容一:什么样的代码是高质量的代码 1.理解高质量代码需要考虑的各种因素 2.尝试结合各种因素编写一个高质量的strcpy() 3.这样的strcpy()可能会遇到什么样的问题 4.该如何一步步解决这些问题 内容二:利用现有工具提升代码的品质 1.如何保证参数的合法性 2.如何提高程序的健壮性 3.如何优化代码,减少冗余逻辑 内容三:如何确保代码的安全性 1.什么样的代码会有安全问题 2.安全问题可能造成的危害 3.什么是缓冲区溢出,原理是什么 4.如何避免/应对缓冲区溢出 内容四:如何检查/避免代码中的内存泄露 1.内存泄露该如何检查 2.应对内存泄露的方法 3.权衡,内存泄露时应该考虑的对策 内容五:杂项 1. 高阶参数检查 2. 局部变量不初始化的危害 |
编写高质量C++代码(3~4小时) 内容六:将代码从C过渡到C++ 1.C++中高质量代码需要考虑的问题 2.C++中的内存泄露与C中的区别 3.如何在C++中防止数组形式的内存泄露 内容七:C++字符串类中鲜为人知的秘密 1. 为什么有时候需要重载拷贝构造函数/赋值运算符 2. 该怎么确定赋值运算符的返回类型 3. 为什么要检查自赋值的情况 4. 避免传回C++类中的内部handler 内容八:高效C++语言,避免C++中的陷阱 1. 区别对待指针和引用 2. 为什么需要使用标准的转型操作符 3. 不要以多态的形式处理数组 4. ++操作符的前后置区别 5. 内存的分配与释放机制 内容九:如何正确的处理C++中的异常 1. 利用析构函数避免资源泄露(智能指针) 2. 如何高效的抛出/捕获异常 3. 为什么在构造函数中阻止资源泄露 4. 为什么在析构函数中要阻止异常流出 |