课程费用

6800.00 /人

课程时长

2

成为教练

课程简介

本课程为期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做持续集成
提交需求