
“软件产品新功能越来越难加入?” “代码越来越难懂,越来越难修改?” “写这个模块的工程师离职了,文档又不全,里面的逻辑很乱,但是没人敢修改?” “产品功能都开发不完,哪有时间写单元测试?” “一个函数100行算什么,我们还有500行,1000行的!”
作为项目经理/开发主管、开发或者测试人员,是否经常听到这样的声音、惊讶和问题? 是否大家都认可代码的质量差,但都无计可施、无能为力? 是否老板拍定了交付日期,开发团队除非拼命加班,否则无论如何也赶不上?
如何上述情况出现了一项,那么可以肯定的说:您的项目内部质量出现了问题。 怎么办? 内部出现了问题,就需要重构;想成功的重构,需要完备的单元测试。 您也许听过什么是重构,什么是单元测试,更有可能曾经尝试过重构和单元测试,但是: 要么:“我们的代码很乱,无法重构”; 要么:“我们的代码复杂,无法做单元测试”;
也许你小范围的尝试了,觉得不错,但是是否能应用在产品代码还心存疑惑; 甚至也许您已经很成功的使用了重构和单元测试,但是觉得对人要求太高,怎么推广到整个团队表示担心。
本课程为期两天,课程除了为您深入剖析什么是重构、什么是单元测试、单元测试和重构对人的要求是什么、带来哪些好处,对产品的会带来哪些影响,更重要的是帮助团队全面掌握如何做重构和单元测试的技巧。
课程采用结对编程的方式组织学员,以“练习-演示-讨论-讲解”为一个单元,由浅入深,循序渐进的方式,每天进行大量的学习单元(20个左右),让学员在丰富、密集的练习和互动中建立对重构和单元测试的认知、学习重构和单元测试正确的步骤和方法,在资深专家的引导和小组讨论中,自己体验、思考、理解,总结重构和单元测试对软件内部质量提升价值。
第一天 重构
1. 识别代码中的坏味道 – 用团队中的产品代码做例子分析所出现的坏味道 – 结对讨论和分析 – 总结、讲解、概要分析所有种类的坏味道(21种) – 结对讨论和分析
2.正确认识和对待坏味道
3.为什么需要重构? – 重构的考虑、成本、粒度、频率和方式
4.学习重构的原则和步骤
5.学习正确的重构步骤
6. 练习小规模重构 – 如何重构一个类
实践环节: 重构的循环
[讲座]识别类内的坏味道
[讲座]重构的循环
[讲座]什么时候算做完了?
[讲座]在一个重构之内
[练习]小步前进 – 识别重构常用的步骤 [
练习]简单设计 – 如何判断简单,你是怎么理解的
已知的Smells
[重构]Extract Method / Class / Subclass / Introduce
Rename Method
Introduce Assertion
Duplicate Observer Data
Replace Parameter with Method
Preserve Whole Object
Introduce Parameter Object
[讲座&练习]注释
[讲座&练习]长方法
[讲座&练习]大类
[讲座&练习]长参数列表
[练习]测验:Smells和重构
[讲座]Smells和重构
命名
[重构]
[讲座&练习]在名字中嵌入了类型
[讲座&练习]无法达意的名字
[讲座&练习]不一致的名字
不必要的复杂性
[重构]
[讲座&练习]死代码
[讲座&练习]投机未来的可能性
[讲座]成对出现的重构
重复
[重构]
[讲座&练习]神奇数字
[讲座&练习]重复的代码
[讲座&练习]可互换的类有不同的接口
条件逻辑
[重构]
[讲座&练习]空值检测
[讲座&练习]复杂的布尔表达式
[讲座&练习]特殊处理的Case
[讲座&练习]模拟的继承
练习较大规模重构 – 多个类之间的重构
描述数据
[讲座&练习]主要的困扰
[讲座&练习]数据类
[讲座&练习]数据块
[讲座&练习]临时字段 继承
[讲座&练习]子类拒绝来自父类的遗产
[讲座&练习]不合适的亲密关系(生成子类)
[讲座&练习]Lazy Class
责任
[讲座&练习]父类嫉妒子类的特性
[讲座&练习]不合适的亲密关系(提取父类)
[讲座&练习]消息链
[讲座&练习]中间人
适应变化
[讲座&练习]不同的变化动机
[讲座&练习]散弹猎枪式的修改
[讲座&练习]平行继承结构
用作公共库的类
[讲座&练习]不完整的库类
第二天 单元测试
单元测试入门:
[演示] 用JUnit 4进行单元测试 – 初步掌握用 JUnit 4 进行单元测试的能力
[练习] 如何按业务价值导向进行单元测试设计
树立正确的单元测试认识、概念和思路
Fixture组织
单测的力度
如何划分单元测试
[讨论&分析] 为什么不写单元测试
[讨论&分析] 谁该对(外部/内部)质量负责
[讲座] 什么不是单元测试
[讲座] 什么是单元测试
[讲座] 项目中单元测试策略
怎么写单元测试
[讲座] 单元测试结构
[讲座] 单元测试内容
[练习] 如何组织测试数据
[讨论&分析] 边界条件
[练习] 如何用Mock辅助边界条件测试 单元测试重构
[讨论&分析] 识别单元测试中的坏味道
[练习] 重构单元测试 单元测试和构建流水线(build pipeline)
[讨论&分析] 单元测试在构建流水线中的位置和作用
[讲座&练习] 用Buildr做Java 项目构建
[讲座&练习] 用Rake做Ruby 项目构建
[讲座&练习] 用 Jenkins/Hudson 做持续集成
最后总结
授课方式
1. 企业定制内训;
2. 公开课;
联系我们
联系我们,按需定制您的课程
电话:400 696 6280
邮箱:contact@scrumcn.com
Scrum中文网资深敏捷教练,SPC,CSP-SM,CSP-PO,CSM,CSPO,PMP。
周老师是拥有近20年技术实战和项目管理经验的资深敏捷教练和顶级技术专家。对技术保持着强烈的兴趣与爱好,喜欢接触各种新技术新方法。擅长技术规划、项目管理、成本控制,和提供完善的技术解决方案。擅长辅导多类型的团队,软件团队,硬件团队,业务团队等。
专注于提升团队各种技术实践 TDD, CI/CD, 自动化验收 等能力,训练符合Scrum要求的能力全栈型团队。通过BDD行为驱动开发实践,有效支撑大规模多团队的敏捷转型。
具有丰富的TDD,持续集成、ATDD,自动化测试、重构、结对编程、演进式设计,DDD Event Sourcing/CQRS 理论知识与实操经验,对技术的追求和风趣的工作风格使得他受到开发团队的喜爱,对团队成员有很强的亲和力,通过结对工作的方式令他们的各项能力得到提升,使他们能够很快的体会到敏捷方法与技术实践所带来的挑战和乐趣。
擅长激活软硬件团队, 提升团队的专业能力、开心指数、以及追求卓越的心。成功帮助过多家软硬件结合的企业1000人以上的团队实施敏捷并取得业务上的良好表现。
曾服务过的客户有上汽集团,太平保险,锐捷智慧教室,锐捷网络,万科泊寓,迈达斯智能,深圳载途科技,上海仙豆智能机器人等。
Scrum中文网是全球第一个Scrum中文网站,中国最早的Scrum和敏捷教育及推广机构,也是国际Scrum联盟(ScrumAlliance)官方授权教育机构和大规模敏捷SAFe官方机构SAI在中国的授权合作伙伴。Scrum中文网是中国敏捷教练的摇篮,启蒙和培养了数万名敏捷专业人士,帮助数百家知名企业成功转型敏捷。
Scrum中文网创立于2008年初,由海内外资深Scrum和敏捷顾问团队共同创办,为企业提供权威专业的Scrum敏捷学习平台,以及敏捷转型咨询、教练辅导和培训服务,服务涵盖定制培训、权威认证、体系建立、教练辅导、工具落地等。权威课程包括:官方权威Scrum认证培训课程(CSM,CSPO,CSD,A-CSM等)、大规模敏捷SAFe及LeSS认证培训,以及量身定制的Scrum敏捷开发企业级实训课程培训, 敏捷工程技术实践课程等。
Scrum中文网致力于在短期内为客户解决企业、产品及项目的关键问题,包括交付周期、交付效率、交付质量、交付成本、团队士气等,同时为客户建立长期持续改善的机制。