软件重构与软件设计模式培训
软件重构与软件设计模式培训详细内容
软件重构与软件设计模式培训(北京,6月29-7月1日)
【培训日期】北京,2021年6月29-7月1日;直播,2021年6月29-7月1日
【培训地点】北京
【培训对象】注重实效的各类软件研发中心的负责人、设计师、架构师、项目经理、技术总监、质量部门经理、开发工程师等。
【课程背景】
软件重构是指在不改变软件功能和外部可见性的情况下,为了改善软件的结构,提高清晰性、可扩展性和可重用性而对软件进行的改造。简而言之,重构就是改进已经写好的软件的设计。在敏捷开发方法学中,重构常常是软件开发循环的一部分,开发者通过增加新的测试和功能,或者重构代码来改善内部的一致性和清晰性。重构也是代码维护中的一部分,既不修正错误,又不增加新的功能性,而是用于提高代码的可读性或者改变代码的结构和设计,使其在将来更容易被维护。特别是,在现有的程序的结构下,给一个程序增加一个新的行为会非常困难,因此开发人员可能先重构这部分代码,使加入新的行为变得容易。
【培训特色】
本课程注重实战,采用案例贯穿方式完成实践,针对项目过程中技术人员常遇到的误区进行汇总、研讨,以程序员的编程思维为前提,通过大量的真实案例,详细地介绍了重构需要注意的要点以及难点,这些全部都是讲师十几年经验的沉淀及总结。
本课程内容理论性与实践性都较强,采取讲课、讨论、实践三者结合的方式,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,软件架构及重构的客座讲师,独立咨询顾问。先后参与了数十个国内大型软件项目,涉及国家财政、军工、税务、医疗等领域的大数据建设、风险防控与人工智能研究,互联网及大数据转型的实践者与倡导者。
【费用及报名】
1、费用:培训费线下培训费:5900元/人;线上培训费:4700元/人(含培训费、讲义费);如需食宿,会务组可统一安排,费用自理。
推荐课程
DeepSeek赋能办公,效率倍增 2025-04-03
《DeepSeek赋能办公,效率倍增》【课程时间】3月11日【培训地点】广州【培训费用】RMB2800 元/人,(含培训费、教材费、税费、茶点)【课程对象】对AI智能办公感兴趣,渴望提升办公效率、优化工作流程、增强职场竞争力的人群课程背景在人工智能深度融入办公场景的时代,本课程聚焦国产高性能职场AI工具DeepSeek,为学员带来一站式的办公软件智能化应用体...
讲师:赵保恒详情
《危机管理与公关技巧》 2025-04-05
《危机管理与公关技巧》(1天)(2025年4月5日,2280元/人)课程目标: 掌握危机的内涵与外延; 掌握危机意识的建立; 掌握危机的可能来源; 掌握管理中潜藏的危机; 掌握营销中坑呢的危机; 掌握生产中存在的危机; 掌握品质方面的危机; 掌握与媒体应对的策略;预应—— 反应一、危机意识1.比危机先行一步2.企业的十三种“死法”——天津大海食品有限公司3....
讲师:鲍爱中详情
《孙子兵法与现代管理》 2025-04-06
《孙子兵法与现代管理》(1天)(2025年4月6日,3380元/人)课程目标: 深度解读孙子思想; 将孙子思想运用到现代管理; 将孙子思想用到人生与生活; 将孙子思想用到个人发展;课程内容:一、孙子的重要影响² 孙子学的文化思考² 孙子学的经学模式² 孙子的用间思想² 孙子的军事哲学思想二、孙子与诸子的地位与融合² 孙子与儒家² 孙子与道家² 孙子与法家² ...
讲师:鲍爱中详情
金牌店长执行力落地班 2025-04-08
金牌店长执行力落地班——中国式人性+美国式PDCA圈,消灭30个执行力死角,快速突破门店业绩【课程对象】店长经理、储备店长、培训经理、总经理、运营总监、 区域经理等追求卓越门店管理技能人士。老板带队建立同频团队,落地效果最好。特别建议黄金团队组合:老板带队+5名核心店长!一、店长,给你一个门店,你会怎么管?店长强,门店就强!业绩是管理出来的!门店管理的核心就...
讲师:程姣详情
非财务经理的财务管理 2025-04-08
非财务经理的财务管理培训时间/地点:2025年4月89日(星期二 星期三)/上 海2025年11月1112日(星期二 星期三)/苏 州收费标准:¥4800/人含授课费、证书费、资料费、午餐费、茶点费、会务费、税费不包含学员往返培训场地的交通费用、住宿费用、早餐及晚餐课程收益:通过学习,快速提炼财务报表的关键数据信息,并能通过老师案例讲解,透视数据背后传递的公...
讲师:安老师详情
中层经理管理能力提升 2025-04-09
《中层经理管理能力提升》讲师/Lecturer:姜老师费用/Price:¥4800元/人课程概述/Overview课程背景:中层经理是连接高层和基层的桥梁,起着承上启下的纽带作用,高层的理念、战略要靠中层执行落实到基层,方能落地生根实现企业目标。然而,中层经理半路出家的现象较多,他们缺少对管理角色、管理方法的认知,没有及时实现角色转换,也没有系统掌握系统管理...
讲师:姜老师详情
VDA6.5 产品审核培训 2025-04-09
课程解读课程背景面对您的顾客,是否经常接受他们的产品审核,且由此存在诸多顾客的不满意项?对您的供应商,如何提高新产品量产前的质量保证信心?或者降低质量风险?对新产品新项目或者工程变更的管理,怎样测试产品的设计开发满足要求?由此可见,产品审核的学习运用,无疑为质量管理体系和产品质量在评价符合性上起了决定性作用。课程目标对于学员,掌握产品审核的目的、意义、程序及...
讲师:踪老师详情
现场质量管理与突破性快速改善(质量问题分析与解决) 2025-04-09
现场质量管理与突破性快速改善(质量问题分析与解决)培训时间/地点:2025年3月1920日(星期三 星期四)/苏 州2025年4月2829日(星期一 星期二)/成 都2025年6月1112日(星期三 星期四)/嘉 兴2025年9月1718日(星期三 星期四)/苏 州2025年11月1920日(星期三 星期四)/嘉 兴2025年4月911日(星期三 星期五)/...
讲师:刘老师详情
供应链数字化转型及先进实践 2025-04-09
供应链数字化转型及先进实践课程安排2025年4月910日(星期三 星期四)/上 海2025年9月1718日(星期三 星期四)/上 海课程费用¥5,200/人(含授课费、证书费、资料费、午餐费、茶点费、会务费、税费)课程背景 随着信息技术的快速发展,数据的获取成本变得越来越低,采购与供应链管理也迎来了“大数据”时代。如何从海量的数据中洞悉供应市场的变化,找到最...
讲师:夏烨详情
以过程和风险为基础的ISO 9001 & ISO 14001 & 2025-04-09
以过程和风险为基础的ISO 9001 amp; ISO 14001 amp; ISO 45001 三标管理体系内审员培训培训时间/地点:2025年4月911日(星期三星期五)/嘉 兴2025年7月911日(星期三星期五)/嘉 兴2025年10月1517日(星期三星期五)/嘉 兴2025年5月2023日(星期二星期五)/苏 州2025年11月1114日(星期二...
讲师:羊老师详情
- [潘文富]薪资考核的初步改善措施
- [潘文富]新开门店的白板期要做些什
- [潘文富]经销商终端建设的基本推进
- [潘文富]中小企业招聘广告的内容完
- [潘文富]优化考核方式,减少员工抵
- [王晓楠]辅警转正方式,定向招录成为
- [王晓楠]西安老师招聘要求,西安各区
- [王晓楠]西安中小学教师薪资福利待遇
- [王晓楠]什么是备案制教师?备案制教
- [王晓楠]2024年陕西省及西安市最