课程简介
本课程为期2天,从了解什么是重构、单元测试;对人的要求和益处是什么、对产品的影响和结果怎么样;到更重要怎么做重构和单元测试。
目标收益
学习结束后,学员对重构和单元测试能建立正确、深入的观点和理解,掌握重构单元测试的基本实践、要点、流行的工具和常见的误解和错误的做法。
培训对象
软件交付人员:开发工程师、测试工程师、项目经理/交付经理
课程大纲
重构(一天) |
1. 能识别代码中的坏味道 用团队中的产品代码做例子分析所出现的坏味道 结论讨论和分析 总结、讲解、概要分析所有种类的坏味道(21种) 结论讨论和分析 2. 正确认识和对待坏味道 3. 为什么需要重构? 重构的考虑、成本、粒度、频率和方式 4. 学习重构的原则和步骤 5. 学习正确的重构步骤 6. 练习小规模重构-如何重构一个类 重构的循环 【讲座】识别类内的坏味道 【讲座】重构的循环 【讲座】什么时候算做完了? 【讲座】在一个重构之内 【练习】小步前进-识别重构常用的步骤 【练习】简单设计-如何判断简单、你是怎么理解的 已知的Smells 【重构】Extract Method/ Class / Subclass /Introduce Rename Method Introduce Assertion Duplicate Observer Date Replace Parameter with Method Preserve Whole Object Introduce Parameter Object 【讲座&练习】注释 【讲座&练习】长方法 【讲座&练习】大类 【讲座&练习】长参数列表 【练习】测验:Smells和重构 【讲座】Smells和重构 命名 【重构】 【讲座&练习】在名字中嵌入了类型 【讲座&练习】无法达意的名字 【讲座&练习】不一致的名字 不必要的复杂性 【重构】 【讲座&练习】死代码 【讲座&练习】投机未来的可能性 【讲座】成对出现的重构 重复 【重构】 【讲座&练习】神奇数字 【讲座&练习】重复的代码 【讲座&练习】可互换的类有不同的接口 条件逻辑 【重构】 【讲座&练习】空值检测 【讲座&练习】复杂的布尔表达式 【讲座&练习】特殊处理的Case 【讲座&练习】模拟的继承 7. 练习较大规模重构-多个类之间的重构 描述数据 【讲座&练习】主要的困扰 【讲座&练习】数据类 【讲座&练习】数据块 【讲座&练习】临时字段 继承 【讲座&练习】子类拒绝来自父亲的遗产 【讲座&练习】不合适的亲密关系(生成子类) 【讲座&练习】Lazy Class 责任 【讲座&练习】父类嫉妒子类的特性 【讲座&练习】不合适的亲密关系(提取父类) 【讲座&练习】消息链 【讲座&练习】中间人 适应变化 【讲座&练习】不同的变化动机 【讲座&练习】散弹猎枪式的修改 【讲座&练习】平行继承结构 用作公共库的类 【讲座&练习】不完整的库类 |
单元测试(1天) |
单元测试入门: 1.【演示】用JUnit4进行单元测试-初步掌握用JUnit4进行单元测试的能力 2.【练习】如何按业务价值导向进行单元测试设计 树立正确的单元测试认识、概念和思路 Fixture组织 单元测试的力度 如何划分单元测试 3.【讨论&分析】为什么不写单元测试 4.【讨论&分析】谁该对(外部/内部)质量负责 5.【讲座】什么不是单元测试 6.【讲座】什么是单元测试 7.【讲座】项目中单元测试策略 怎么写单元测试 1.【讲座】单元测试结构 2.【讲座】单元测试内容 3.【练习】如何组织测试数据 4.【讨论&分析】边界条件 5.【练习】如何用Mock辅助边界条件测试 单元测试重构 1.【讨论&分析】识别单元测试中的坏味道 2.【练习】重构单元测试 单元测试和构建流水线(bulid pipeline) 1.【讨论&分析】单元测试在构建流水线中的位置和作用 2.【讲座&练习】用Buildr做Java项目构建 3.【讲座&练习】用Rake做Ruby项目构建 4.【讲座&练习】用Jenkins/Hudson做持续集成 |
重构(一天) 1. 能识别代码中的坏味道 用团队中的产品代码做例子分析所出现的坏味道 结论讨论和分析 总结、讲解、概要分析所有种类的坏味道(21种) 结论讨论和分析 2. 正确认识和对待坏味道 3. 为什么需要重构? 重构的考虑、成本、粒度、频率和方式 4. 学习重构的原则和步骤 5. 学习正确的重构步骤 6. 练习小规模重构-如何重构一个类 重构的循环 【讲座】识别类内的坏味道 【讲座】重构的循环 【讲座】什么时候算做完了? 【讲座】在一个重构之内 【练习】小步前进-识别重构常用的步骤 【练习】简单设计-如何判断简单、你是怎么理解的 已知的Smells 【重构】Extract Method/ Class / Subclass /Introduce Rename Method Introduce Assertion Duplicate Observer Date Replace Parameter with Method Preserve Whole Object Introduce Parameter Object 【讲座&练习】注释 【讲座&练习】长方法 【讲座&练习】大类 【讲座&练习】长参数列表 【练习】测验:Smells和重构 【讲座】Smells和重构 命名 【重构】 【讲座&练习】在名字中嵌入了类型 【讲座&练习】无法达意的名字 【讲座&练习】不一致的名字 不必要的复杂性 【重构】 【讲座&练习】死代码 【讲座&练习】投机未来的可能性 【讲座】成对出现的重构 重复 【重构】 【讲座&练习】神奇数字 【讲座&练习】重复的代码 【讲座&练习】可互换的类有不同的接口 条件逻辑 【重构】 【讲座&练习】空值检测 【讲座&练习】复杂的布尔表达式 【讲座&练习】特殊处理的Case 【讲座&练习】模拟的继承 7. 练习较大规模重构-多个类之间的重构 描述数据 【讲座&练习】主要的困扰 【讲座&练习】数据类 【讲座&练习】数据块 【讲座&练习】临时字段 继承 【讲座&练习】子类拒绝来自父亲的遗产 【讲座&练习】不合适的亲密关系(生成子类) 【讲座&练习】Lazy Class 责任 【讲座&练习】父类嫉妒子类的特性 【讲座&练习】不合适的亲密关系(提取父类) 【讲座&练习】消息链 【讲座&练习】中间人 适应变化 【讲座&练习】不同的变化动机 【讲座&练习】散弹猎枪式的修改 【讲座&练习】平行继承结构 用作公共库的类 【讲座&练习】不完整的库类 |
单元测试(1天) 单元测试入门: 1.【演示】用JUnit4进行单元测试-初步掌握用JUnit4进行单元测试的能力 2.【练习】如何按业务价值导向进行单元测试设计 树立正确的单元测试认识、概念和思路 Fixture组织 单元测试的力度 如何划分单元测试 3.【讨论&分析】为什么不写单元测试 4.【讨论&分析】谁该对(外部/内部)质量负责 5.【讲座】什么不是单元测试 6.【讲座】什么是单元测试 7.【讲座】项目中单元测试策略 怎么写单元测试 1.【讲座】单元测试结构 2.【讲座】单元测试内容 3.【练习】如何组织测试数据 4.【讨论&分析】边界条件 5.【练习】如何用Mock辅助边界条件测试 单元测试重构 1.【讨论&分析】识别单元测试中的坏味道 2.【练习】重构单元测试 单元测试和构建流水线(bulid pipeline) 1.【讨论&分析】单元测试在构建流水线中的位置和作用 2.【讲座&练习】用Buildr做Java项目构建 3.【讲座&练习】用Rake做Ruby项目构建 4.【讲座&练习】用Jenkins/Hudson做持续集成 |