以两顶帽子和小步快跑应对需求变更,通过遗留系统七步重构及设计模式案例,练习可测试、低耦合的软件演化。本期安排:2026年11月10日,北京。
| 开课日期 2026年11月10日—2026年11月12日 | 开课地点 北京 |
| 学习费用 5900元/人 | 学制 3天 |
课程定位
面向研发负责人、设计师、架构师、项目及质量管理人员和开发工程师,以编程案例理解重构与设计模式的协同。
课程特色
- 代码重构设计重构软件腐烂监控重构管理 开发工程师精通了解了解了解 设计师精通精通了解了解 架构师精通精通精通精通 数据库工程师了解了解// 质量管理//精通精通 管理者//监控了解
- 本课程注重实战,采用案例贯穿方式完成实践,针对项目过程中技术人员常遇到的误区进行汇总、研讨,以程序员的编程思维为前提,通过大量的真实案例,详细地介绍了重构需要注意的要点以及难点,这些全部都是讲师十几年经验的沉淀及总结。 本课程内容理论性与实践性都较强,采取讲课、讨论、实践三者结合的方式,1/3时间讲解核心思想,1/3时间动手重构实践,1/3点评分析总结,形成一整套解决问题的方法。 培训要点 软件重构面临的背景都是相似的,程序员们为了快速完成需求和上线而写出了最基本的代码。然后在功能的不断扩充过程中,以打补丁的方式对代码进行扩充,中间还会面临着开发人员的变更和离职。逐渐地,代码就会变得越来越臃肿,渐渐地变得难以维护。 糟糕的软件代码会带来开发效率的降低,在糟糕架构下加入新功能,会大大影响新功能的代码质量,开发和调试时间都会成倍增加;其次是故障率的提升,在质量低下的代码中,总是容易隐藏着很多不易发现的坑,这些都会成为故障的隐患;同时,架构也会使得需求的完成大打折扣,使得设计好的目标,因为架构限制或者性能等原因,只能完成80%甚至更低。 随着不同产品的推出,不同客户、不同版本的发布,需要维护的遗留代码越来越多,重构也就在所难免。不仅如此,所有的软件系统,经过一段时间的维护,都会逐渐变成遗留系统,并且都遭遇了缓慢而不可抗拒的腐化。因此,软件开发人员不得不面对既有系统的混乱代码。 本课程首先深入剖析软件质量下降的根源,提出重构是软件变更中保持高质量的必然,讲解如何运用“两顶帽子”的方式应对变更,拒绝腐化。站在实战的角度讲解高质量软件设计的“小步快跑”过程。接着,用真实案例讲解已经代码腐化的遗留系统是如何通过“软件重构七步曲”,由简入深、循序渐进地重构一个大系统。最后,以重构的角度进行实战,讲解软件如何在不断变更的过程中,运用设计模式来降低耦合,保持软件设计质量不退化。
课程模块
第一部分 为什么软件需要及时重构
- 第一单元
- 剖析软件质量不断下降的根源质量不断下降的表现:
- 1.程序代码越来越乱
- 2.软件维护成本越来越高
- 3.软件变更越来越困难
- 4.无法进行新技术的改造
- 以往采取的措施:
- 1.头痛医头,脚痛医脚
- 2.抛弃掉重新编写
- 3.因担心未来变化而做的过度设计
- 带来的问题
- 1.团队成员越来越多但效率却越来越低
- 2.测试变得越来越困难而任务繁重
- 3.软件系统越来越笨重而不适应未来变化
- 分析与反思
- 案例分析:一个遗留系统的演化过程
- 1.起初的设计
- 2.随后的变更
- 3.质量不断下降的过程
- 软件质量下降的根源:
- 1.软件总是因变更而变得越来越复杂
- 2.软件结构已经不再适应复杂的软件需求
- 3.必须要调整软件结构以适应新的软件需求
- 软件是因需求变更而质量下降吗?
- 案例分析:推演软件变更的设计过程
- 应对软件变更的最佳方式:两顶帽子
- 1.重构原有代码以适应新的需求
- 2.实现新的需求
- 案例:演示两顶帽子的设计过程
第二单元
- 高质量的软件设计过程以往软件设计的过程:
- 1.演示以往软件设计的过程
- 2.剖析以往软件设计的问题与风险
- 小步快跑模式的开发过程:
- 1.用最快的速度开发一个最核心的功能
- 2.让第一个版本运行起来并可以验证
- 3.在第一个版本的基础上不断添加功能:
- a.每次只添加一个很简单、很单一的功能
- b.每次以两顶帽子的方式添加新功能
- c.运行、调试与验证
- d.重复这个过程添加下一个功能
- 4.复杂的系统就是由一次次正确开发的不断积累而成
- 案例:演示小步快跑的开发过程
- 小步快跑解决的问题:
- 1.复杂功能有效地解耦
- 2.代码编写总是可测试与验证
- 3.简化设计与思考的复杂度
- 4.适时重构以避免软件退化
- 案例:数据推送程序的设计过程
第二部分 如何进行软件重构
- 第二部分 如何进行软件重构
第三单元
- 何为重构软件重构的概念
- 1.重构是一系列代码的等量变换
- 案例:一个Hello World重构过程
- 2.重构的保险索:自动化测试
- 案例:Hello World的自动化测试过程
- 3.软件修改的四种动机——重构的价值
- 4.一个真实的谎言——重构的误区
- 5.重构的主要方法与技巧
- 案例分析:重构一个大型遗留系统
- 1.重构第一步:分解大函数
- 超级大函数及其危害
- 案例:演示大函数产生的过程
- 案例:演示抽取方法操作步骤
- 实践抽取方法会遇到的问题和解决方案
- 2.重构第二步:拆分大对象
- 超级大对象及其危害
- 案例:演示超级大对象的产生过程
- 案例:演示抽取类的操作步骤
- 讲解单一职责设计原则
- 案例:演示“分久必合,合久必分”的重构过程
- 3.重构第三步:提高复用率
- 讲解顺序编程及其危害
- “不要重复代码”原则
- 案例:提高代码复用的6个方法
- 案例:演示新增代码时的代码复用过程
- 用静态检查工具检查重复代码
- 4.重构第四步:可扩展设计
- 过度设计 vs. 恰如其分的设计
- 讲解“开放-封闭”的设计原则
- 案例:讲解可扩展设计的4个方法
- 案例:讲解新增代码的可扩展设计过程
- 5.重构第五步:降低耦合度
- 案例:讲解接口、实现与工厂模式
- 案例:讲解外部接口解耦与适配器模式
- 案例:讲解继承泛滥问题与桥接模式
- 案例:讲解方法解耦与策略模式
- 案例:讲解过程解耦与命令模式
- 案例:讲解透明扩展与组合模式、装饰者模式
- 6.重构第六步:系统分层
- 反思软件架构需要怎样的分层结构
- 遗留系统如何拥抱需求变化
- 遗留系统如何应对技术变革
- 7.重构第七步:领域驱动设计
- 领域驱动设计的概念
- 讲解领域模型分析方法
- 讲解原文分析法与领域驱动设计
- 讨论:如何制定重构项目计划
- 练习:重构一个小程序并编写测试脚本
第四单元
- 关于重构的讨论什么时候重构
- 1.重构是一种习惯
- 2.重构让程序可读
- 3.重构,才好复用
- 4.先重构,再扩展
- 5.紧急任务时的重构
- 测试的困境
- 1.重构初期的困局
- 2.解耦与自动化测试
- 3.建立自动化测试体系
- 重构的评价
- 1.评价软件质量的指标
- 2.评价软件质量的工具
第三部分 运用设计模式实战软件重构
- 第三部分 运用设计模式实战软件重构
第五单元
- 适配器模式适配器模式的应用
- 1.适配器模式解决第三方框架带来的难题
- 案例:Hibernate适配器的设计
- 2.适配器模式解决外部接口的设计难题
- 案例:第三方支付接口的设计
- 案例:财务数据接口的设计
第六单元
- 策略模式策略模式的应用
- 1.案例:工资发放功能设计改进的过程
- 1)工资发放功能的Java实现
- 2)工资发放功能的C++实现
- 2.案例:数据导出功能的设计实现
- 1)深入理解开放-封闭原则
- 2)数据导出功能的变更与改进过程
- 3.案例:财务凭证生成功能的设计过程
- 1)财务凭证生成功能的初始需求与设计
- 2)财务凭证生成功能的扩展与分析过程
- 3)财务凭证生成功能的最终设计
- 4)深入理解单一职责原则
- 5)学习“两顶帽子”的设计方式
- 练习:财务凭证生成功能的设计与实现
第七单元
- 工厂模式探讨软件设计中遇到的难题
- 1.依赖反转原则的设计难题
- 2.开放-封闭原则的设计难题
- 3.探讨工厂模式的本质
- 简单工厂模式
- 1.简单工厂模式的C++实现
- 2.基于配置的简单工厂模式
- 3.剖析简单工厂如何实现依赖反转原则
- 案例:剖析Spring的beanFactory
- 4.解读工厂模式对设计的重大意义
- 5.讲解如何创建一个工厂
- 1)创建工厂的步骤与关键点
- 2)利用Spring框架简化工厂类的设计
- 案例:数据导出功能的工厂实现
- 工厂方法模式
- 1.工厂方法模式的概念
- 2.工厂方法模式的应用
- 案例:SAX框架的工厂类设计
- 抽象工厂模式
- 1.抽象工厂模式的概念
- 抽象工厂模式的实现
- 案例:标签库的设计改进过程
- 1)最初的标签库设计
- 2)运用简单工厂的标签库设计
- 3)运用工厂方法的标签库设计
- 4)运用抽象工厂的标签库设计
- 5)最终基于配置的标签库设计
第八单元
- 单例模式和原型模式单例模式的应用
- 1.单例模式带来的设计变革
- 1)充血模型vs.贫血模型
- 2)探讨单例模式与性能问题
- 2.单例模式改变了很多软件的设计
- 原型模式的应用
- 1.工厂类在提供产品时遇到的设计问题
- 2.原型模式及其概念
- 原型模式的设计实现
- 案例:函数调用的无副作用问题
- 案例:JavsScript中的原型模式
第九单元
- 模板方法模式模板方法模式的作用与技巧
- 案例:一个工厂模板的设计与实现
- 深入理解不要重复自己原则
- 1.重复代码带来的严重后果
- 2.散弹式修改及其解决思路
- 3.探讨实现代码复用的难题
- 4.代码复用在不同场合采用的方法
- 5.模板方法模式在代码复用中的作用
第十单元
- 装饰者模式及桥接模式装饰者模式的应用
- 案例:多数据源的设计实现
- 1.多数据源问题的分析设计过程
- 2.多数据源的设计与实现
- 案例:商城收银系统的设计变更过程
- 1.商城收银系统期初的设计
- 2.混合策略的设计与实现
- 3.多层装饰者的设计与实现
- 重新理解里氏替换原则
- 1.透明的功能扩展
- 2.里氏替换原则
- 练习:商场收银系统的2种设计与实现
- 桥接模式的应用
- 案例:员工管理与工资发放的设计
- 1.员工管理与工资发放带来的继承泛滥问题
- 2.采用桥接模式的设计与实现
- 案例:查询支持类的设计
- 1.查询支持类遭遇的继承泛滥问题
- 2.查询支持类的解决方案
- 3.单例模式下查询支持类的设计
- 深入体会单一职责原则
适合人群
注重实效的各类软件研发中心的负责人、设计师、架构师、项目经理、技术总监、质量部门经理、开发工程师等
师资信息
范老师
航天信息前首席架构师,畅销书籍《大话重构》作者,规模化敏捷SPC,软件架构及重构的客座讲师,独立咨询顾问。先后参与了数十个国内大型软件项目,涉及国家财政、军工、税务、医疗等领域的大数据建设、风险防控与人工智能研究,互联网及大数据转型的实践者与倡导者
课程咨询与报名
了解本期课程安排、师资及报名事项,请联系新中华学习网:400-061-6586,也可使用本页下方的报名咨询表。具体开课安排以正式通知为准。
温馨提示:本文内容根据课程内容整理,各模块实际讲授内容由授课老师根据学员情况灵活调整,最终以课堂授课为准。
常年开班,获取最新开班时间或内训报价,咨询:400-061-6586,咨询微信:pxbbaoming

