第一部分
重构核心思想 |
第一单元 重构核心思想 |
内容一:软件业者的反思: 软件代码的为什么会变烂
1. 软件可维护性(为什么必须重视软件的可维护性)
2. 代码质量概述
3. 破窗效应
4. 技术债务
5. 对代码的重新认识---代码就是设计
6. 案例演示1-通过演示国内某电信项目,随着客户需求的变化,导致软件结构混乱,大家反思,为什么?
你认为代码变烂的原因?
内容二:重构思想与误区
1. 重构概述
2. 何时重构
3. 重构的误区
4. 重构是持续进行的,不要先编写烂代码,再抽出重构
5. 如何发现哪些地方需要重构
6. 如何保证重构的正确
7. 如何测试重构
8. 通过一个小案例演示重构的基本思想(什么时间重构,如何发现重构点,如何保证重构的正确性,最后如何验收)
内容三:案例—通过实际项目演示重构
1. 介绍项目需求情况,进行设计
2. 阅读代码指出代码坏症状
3. 通过重构逐步改善代码质量
4. 通过该案例演示重构的过程,我们遇到的难处,如何解决? |
第二部分
重构最佳实践---实践者的思考 |
重构实践 |
内容一:重构关键—发现代码的坏味道
1. 代码坏味道概述
2. 代码坏味道的分类
3. 识别代码坏味道,是重构的最重要一步
4. 所谓重构,无非就是嗅到坏味道,然后,一小步一小步的改了它。问题是,很多人对坏味道的容忍度让他们嗅不到坏味道,
5. 案例分析—通过真实项目的代码,分析代码坏味道
内容二:重构手段和IDE重构工具
1. 重构手段概述
2. 简要演示重构的手段
3. 使用IDE重构工具进行重构
4. 重构工具的使用标准
5. 重构工具的使用心得
6. 通过案例演示如何通过重构工具完成重构 |
第三部分
重构案例- 某电信项目重构实践 |
重构巨型大函数
该案例主要演示如何重构实际项目代码之中的巨大方法 |
内容一:重构案例—该案例重点 巨型函数
1. 函数的重构
2. 巨型函数的种类
 a) 项目列表式巨型方法
b) 锯齿状巨型方法
3. 利用自动重构对付巨型方法
4. 利用手工重构对付巨型方法
5. 引入感知变量
6. 函数依赖收集
7. 分解助手方法和方法对象
8. 通过案例介绍函数的重构最佳实践
内容二:重构案例—该案例重点 分解函数和函数参数重构
1. 分解函数
2. 助手方法提取
3. 函数参数的重构
4. 函数参数的相关坏味道
5. 流程函数和功能函数的调用关系
6. 通过案例介绍如何代码之中的分解函数和函数之间参数的重构
内容三:重构案例—该案例重点 复杂条件表达式重构
1. 复杂条件表达式重构
2. IF/Else深层嵌套语句的重构
3. Switch语句的重构
4. 重构表驱动
5. 通过案例介绍如何代码之中的复杂条件表达式的重构
内容四:重构案例—该案例重点学习代码重复
1. 代码重复分类以及重构手段
2. 强加的重复(imposed duplication):开发者觉得他们无可选择-环境似乎要求重复
3. 无耐心的重复(impatient duplication):开发者偷懒,他们重复,因为那样似乎更容易.
4. 无意的重复(inadvertent duplication):开发者没有意识到他们在重复信息
5. 开发者之间的重复(interdeveloper duplication):同一团队(或不同团队)的几个人重复了同样的信息.
6. 通过案例介绍代码的重复,以及如何重构 |
第四部分
重构案例- 某电力项目重构实践 |
类重构
该案例演示大类的重构实践 |
内容一:重构案例—该案例重点 巨大类的重构
1. 重构大类
1. 对象的职责
2. 单一职责原则与类的重构
3. 职责的识别
a) 方法分组
b) 观察隐藏方法
c) 寻找可以更改的原因
d) 寻找内部关系
e) 寻找主要职责
f) 接口分离—接口隔离原则
4. 提取类和接口
5. 通过案例介绍如何重构巨大的类 |
第五部分
重构案例- 税务/社保项目重构实践 |
重构模式
通过多个案例分析如果打通重构与模式任督二脉 |
内容一:重构到模式
1. 软件设计的基本原则
2. 设计模式概述
3. 设计模式的本质论
4. 设计模式如何适应变化和封装
5. 重构到模式的思路
内容二:案例---重点介绍重构基本类型依赖和对应模式
1. 通过案例学习以下重构到模式手段
2. 以State取代状态改变条件语句
3. 以Strategy取代条件逻辑
4. 以Composite取代隐含树
5. 以Interpreter取代隐式语言
6. 转移装饰功能到Decorator
7. 用Builder封装Composite
8. 重点学习案例的重构到模式的过程
内容三:案例---重点介绍重构代码重复和对应模式
1. 通过案例学习以下重构到模式手段
2. 构造Template Method
3. 以Composite取代一/多之分
4. 引入Null Object
5. 用Adapter统一接口
6. 用Fatory Method引入多态创建
7. 重点学习案例的重构到模式的过程
内容四:案例---重点介绍重构代码过长/过大的类/方法和对应模式
1. 转移聚集操作到Vistor
2. 以Strategy取代条件逻辑
3. 以Command取代条件调度程序
4. 转移聚集操作到Collecting Parameter
5. 重点学习案例的重构到模式的过程
内容五:案例---重点介绍条件逻辑过度复杂和对应模式
1. 以Strategy取代条件逻辑
2. 以State取代状态改变条件语句
3. 转移装饰功能到Decorator
4. 引入Null Object
5. 以Command替换条件调度程序
6. 转移聚集操作到Visitor
重点学习案例的重构到模式的过程
|
第六部分
重构案例- 某金融项目设计重构实践 |
设计和模块重构
通过多个案例介绍设计重构,以及组件解耦,重构 |
内容一:设计重构
1. 重构与设计的思想---根据代码坏味道改善设计
2. 软件需求不可预测性----设计师不可能进行预测式设计
3. 软件设计的重构
4. 「重构」和设计彼此互补
5. 「事先设计」("Big Up Front Design)
6. 演进式设计 (evolutionary design)
7. Growing an Architecture 演化架构
8. 分析某项目,如何设计重构,给我们哪些启示,我们可以学习到什么
内容二:组件/包/模块重构
1. 优良的系统设计意味着我们把系统分割成了一个个可单独部署的组件,单独部署意味着如果更改了一个组件,我们也不需要重新部署其他组件。
2. 组件和包 坏味道
3. 模块之间解耦
4. 组件的内聚性实践
5. 组件的依赖性实践
6. 企业应用系统组件设计最佳实践
7. 分析某项目,演示重构,给我们哪些启示,我们可以学习到什么 |
第七部分
重构案例- 互联网和电信项目架构重构实战 |
架构重构
通过多个实际案例,演示如何进行架构重构 |
内容一: 架构重构
1. 软件架构概述
2. 遗留系统的软件架构恢复
3. 软件架构的重构时机
4. 软件架构的重构步骤
5. 架构坏味道
6. 架构重构策略
内容二:案例分析—某互联网项目架构重构(根据时间调整)
1. 项目背景以及相关需求
2. 软件架构的演进与重构过程
3. 质量属性对软件架构的驱动
4. 架构的可扩展性架构
5. 缓存技术在架构之中的应用
6. Web层的架构策略
7. 中间层的架构和集群策略
8. 大型并发系统Session的复制和容错架构策略
9. 数据的架构
10. 该案例主要演示软件架构的重构策略
内容三:案例分析—某电信项目架构重构
1. 介绍项目需求情况,进行设计
2. 通过重构逐步实现设计的可维护, 可重用
3. 应用管道与过滤器/元数据/微内核等架构模式
4. 应用AOP架构思想
5. 应用设计模式(Command/ Observer/Proxy/Chain of
Responsibility )
6. 通过案例学习架构的重构策略和步骤 |
第八部分
重构管理与安全重构 |
重构管理
如何进行安全重构, 消除恐惧心里。 如何使重构持续化,使开发者必须重构 |
内容一:安全重构
1. 重构的恐惧心里
2. 重构勇气
3. 安全重构和祈祷式重构
4. 安全重构保证
a) 依赖编辑器
b) 签名保持
c) 单一目标
d) 依赖编译器
e) 个人的能力
f) 代码审查
g) 单元测试
h) 验收测试
i) 人工测试
5. 通过案例如何保证重构的正确性
内容二:重构管理
1. 代码管理
2. 冰山理论
3. 如何争取业务人员和管理者的支持
4. 持续重构与代码分析工具
5. 持续集成与重构
6. 重构日常习惯
6. 通过案例分析如何保持持续重构,以及如何向领导和业务人员说服重构
|