重构——遗留系统重构与维护
Mace Liu 查看讲师
百林哲咨询(北京)有限公司专家团队成员
曾任职BEA(中国)资深软件架构师,十余年的企业软件架构、开发和管理经验, 侧重于企业应用软件架构设计.主要负责客户大型项目的架构设计和研发。
浏览:5103次
详情 DETAILS

简介

随着不同产品的推出、不同客户,不同版本的发布,需要维护的遗留代码越来越多,重构也就在所难免。迄今为止所有的软件系统都会变成遗留系统,并且都遭遇了缓慢,不可抗拒的腐化,因此软件开发人员不得不面对既有系统的混乱代码。而本课程正是告诉你如何重构既有的遗留系统, 如何重构代码,重构设计,重构架构。这就是本课程所要讲述的内容---重构。简言之,该课程教你如何扭转系统腐化,重构复杂遗留系统,减低维护成本。在面对一个错综复杂的,不透明的,令人费解的系统时如何慢慢地,逐步地将其变成一个简单的,有良好组织和设计的系统。

目标

帮助学员如何扭转系统腐化,重构复杂遗留系统,减低维护成本。

帮助学员在错综复杂的系统下,将其变成一个简单的,有良好组织和设计的系统。

课程时长

2天(12H)

受众人群

对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人;各类软件研发中心的软件设计师、架构师, 项目经理,技术总监,质量部门经理。

课程特色

本课程注重实战,采用案例贯穿方式完成实践,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总,研讨,并最终形成培训教程。本次培训从程序员的编程思维开始讲解,通过大量的真实案例,详细地介绍了重构需要注意的要点以及难点,这些知识都是讲师十几年经验的总结。本次课程1/3时间讲解核心思想,1/3时间动手重构实践,1/3点评分析总结。

分享提纲

章节主题课程内容

为什么软件需要及时重构

软件腐烂--重构的必要性

内容一:软件业者的反思: 软件腐烂

1.软件腐烂(Software rot),也叫做代码腐烂(code rot)或软件腐朽(software decay)。它描述了随着时间的逝去感知到软件的缓慢衰退,其将最终导致它变得不完善、不可使用或难以维护。

2.软件腐烂(Software rot)有两种形式:

3.隐匿的腐烂:软件逐渐不再(仍)被使用随着剩余的应用程序的改变变得不能用。它已经被观察到不再被使用的软件有可能一年的半衰期;

4.活动的腐烂:软件随着不断地被修改趋向于失去它的完整性。

5.破窗效应与技术债务

重构

何为重构

内容一:重构

1.重构概述

2.何时重构

3.重构的误区

4.重构是持续进行的,不要先编写烂代码,再抽出重构

5.如何发现哪些地方需要重构

内容二:案例—通过实际项目演示重构

1.介绍项目需求情况,进行设计

2.阅读代码指出代码坏症状

3.通过重构逐步改善代码质量

4.通过该案例演示重构的过程,我们遇到的难处,如何解决?

内容三:重构关键—代码的坏味道 

1.代码坏味道概述

2.代码坏味道的分类

3.识别代码坏味道,是重构的最重要一步

4.所谓重构,无非就是嗅到坏味道,然后,一小步一小步的改了它。问题是,很多人对坏味道的容忍度让他们嗅不到坏味道,

5.案例分析—通过真实项目的代码,分析代码坏味道

重构


内容一:重构

1.重构手法概述

2.简要演示重构的主要手法

3.使用IDE重构工具进行重构

4.通过案例演示如何通过重构工具完成重构

内容二:Rhythm of Refactoring -baby step

1.Baby steps involve making a few code changes and then checking your work by running tests. Typical refactorings take seconds or minutes to perform

2.The Rhythm of Refactoring


重构难题

内容一:重构技术难题

1.如何发现重构点

2.知道重构的目标(结果)

3.如何去重构—重构实践

4.如何保证重构的正确性-单元测试

内容二:重构业务难题

1.重构手法概述

2.简要演示重构的主要手法


重构实战1一函数相关重构


函数重构

内容一:函数的重构

1.函数的重构

2.巨型函数的种类

  a)项目列表式巨型方法

  b)锯齿状巨型方法

3.分解函数

4.助手方法提取

5.利用自动重构对付巨型方法

函数策略和技巧


内容一:Refactoring Strategies & Tactics

1.Refactoring Strategy: Piecemeal Refactoring

2.Refactoring Strategy:Divide & Conquer

3.Refactoring Strategy:Narrowed Change

4.Refactoring Strategy:Parallel Change

5.Refactoring Strategy:Unified Methods


重构实战2一类重构


类重构


内容一:重构案例—该案例重点 巨大类的重构

1.重构大类

1.对象的职责重构

2.职责的识别

3.提取类和接口

4.通过案例介绍如何重构巨大的类

重构实战3一重构到模式


 

 重构到模式


内容一:案例---重构设计方案引入设计模式

1.通过项目分析重构到模式的手段

2.构造Template Method

3.以Composite取代一/多之分

4.引入Null Object

5.用Adapter统一接口

6.用Fatory Method引入多态创建

7.通过案例介绍如何重构原始设计方案,演示如何通过重构导入设计模式 

内容二:案例---重点介绍重构基本类型依赖和对应模式

1.通过案例学习以下重构到模式手段

2.以State取代状态改变条件语句

3.以Strategy取代条件逻辑

4.以Composite取代隐含树

5.以Interpreter取代隐式语言

内容三:案例---重点介绍重构代码重复和对应模式

内容四:案例---重点介绍重构代码过长/过大的类/方法和对应模式

1.转移聚集操作到Vistor

2.以Strategy取代条件逻辑

3.以Command取代条件调度程序

4.转移聚集操作到Collecting Parameter

5.重点学习案例的重构到模式的过程

内容五:案例---重点介绍条件逻辑过度复杂和对应模式

1.以Strategy取代条件逻辑

2.以State取代状态改变条件语句

3.转移装饰功能到Decorator

4.引入Null Object

5.以Command替换条件调度程序

重构实战4一模块/组件重构


模块重构


内容一:模块重构

1.优良的系统设计意味着我们把系统分割成了一个个可单独部署的组件,单独部署意味着如果更改了一个组件,我们也不需要重新部署其他组件。

2.组件和包 坏味道

3.模块之间解耦

4.组件的内聚性实践

5.组件的依赖性实践

6.企业应用系统组件设计最佳实践

7.分析某项目,演示模块重构,如何在大型应用系统进行模块重构



企业服务热线:400-106-2080
电话:18519192882
投诉建议邮箱:venus@bailinzhe.com
合作邮箱:service@bailinzhe.com
总部地址:
北京市-丰台区-汽车博物馆东路6号3号楼1单元902-B73(园区)
全国客户服务中心:
天津市-南开区-桂苑路15号鑫茂集团鑫茂军民园1号楼A座802-803
公众号
百林哲咨询(北京)有限公司 京ICP备2022035414号-1