摘要 | 第5-7页 |
ABSTRACT | 第7页 |
1. 绪论 | 第15-18页 |
1.1 问题的提出 | 第15-16页 |
1.2 本文的研究内容及目标 | 第16-17页 |
1.3 本文的结构 | 第17-18页 |
2. 软件重构及其基本方法 | 第18-26页 |
2.1 何谓软件重构 | 第18-19页 |
2.1.1 软件重构定义 | 第18页 |
2.1.2 软件重构原则——两顶帽子 | 第18-19页 |
2.2 软件重构动机 | 第19-20页 |
2.2.1 重构可以改进代码的设计 | 第19页 |
2.2.2 重构使软件更易被理解 | 第19-20页 |
2.2.3 重构帮助程序员找到臭虫 | 第20页 |
2.3 软件重构方法概述 | 第20-22页 |
2.3.1 重复代码 | 第20页 |
2.3.2 方法过长 | 第20页 |
2.3.3 条件逻辑太复杂 | 第20-21页 |
2.3.4 基本类型迷恋 | 第21页 |
2.3.5 不恰当的暴露 | 第21页 |
2.3.6 冗赘类 | 第21-22页 |
2.3.7 分支语句 | 第22页 |
2.3.8 组合爆炸 | 第22页 |
2.4 软件重构中的测试 | 第22-24页 |
2.4.1 测试在重构中的价值 | 第22-23页 |
2.4.2 重构与单元测试 | 第23-24页 |
2.4.3 NUnit 单元测试框架 | 第24页 |
2.5 软件重构工具 | 第24-26页 |
3. 基于模式的重构研究 | 第26-36页 |
3.1 重构对软件设计的影响 | 第26-27页 |
3.2 设计模式简介 | 第27-28页 |
3.3 秦山系统重构中相关设计模式 | 第28-34页 |
3.3.1 抽象工厂(Abstract Factory) | 第28-29页 |
3.3.2 单件模式(Singleton) | 第29-30页 |
3.3.3 享元模式(Flyweight) | 第30页 |
3.3.4 命令模式(Command) | 第30-31页 |
3.3.5 中介者(Mediator) | 第31-32页 |
3.3.6 状态(State) | 第32页 |
3.3.7 备忘录(Memento) | 第32-33页 |
3.3.8 策略(Strategy) | 第33-34页 |
3.3.9 模板方法(Template Method) | 第34页 |
3.4 设计模式对重构的意义 | 第34-36页 |
4. 秦山核电系统的重构设计 | 第36-42页 |
4.1 系统重构前设计 | 第36-38页 |
4.1.1 系统架构图 | 第36-37页 |
4.1.2 原系统的一些设计缺陷 | 第37-38页 |
4.2 系统重构后的设计 | 第38-42页 |
4.2.1 系统架构图 | 第38页 |
4.2.2 业务逻辑层设计 | 第38-39页 |
4.2.3 用户界面层设计 | 第39-42页 |
5. 秦山核电系统重构实施 | 第42-51页 |
5.1 基于 QA 审计的重构 | 第42-44页 |
5.2 基于“代码坏味”的重构 | 第44-51页 |
5.2.1 重新组织函数 | 第44页 |
5.2.2 在对象之间搬移特性 | 第44-45页 |
5.2.3 重新组织数据 | 第45-46页 |
5.2.4 简化条件表达式 | 第46页 |
5.2.5 简化函数调用 | 第46页 |
5.2.6 处理概括关系 | 第46-47页 |
5.2.7 “坏味重构”——更清晰的类职责 | 第47-49页 |
5.2.8 “坏味重构”——去除代码冗余 | 第49-51页 |
6. 基于设计模式的重构 | 第51-66页 |
6.1 模式重构目标 | 第51页 |
6.2 将显示与领域分离 | 第51-55页 |
6.2.1 Command 模式重构 | 第51-53页 |
6.2.2 Mediator 模式重构 | 第53-54页 |
6.2.3 状态模式的引入 | 第54-55页 |
6.3 动态共享机制 | 第55-58页 |
6.3.1 Flyweight 模式重构 | 第55-56页 |
6.3.2 Abstract Factory 模式重构 | 第56-58页 |
6.4 更加友好的人机交互 | 第58-60页 |
6.4.1 Memento 模式重构 | 第58-59页 |
6.4.2 Memento,Command,State 的协作 | 第59-60页 |
6.5 考虑将来的变化 | 第60-62页 |
6.5.1 Strategy 模式重构 | 第60-61页 |
6.5.2 Strategy 模式程序实现 | 第61-62页 |
6.6 模式重构的原则与策略 | 第62-66页 |
6.6.1 用模式思考过程 | 第63页 |
6.6.2 倒换料功能重构案例分析 | 第63-66页 |
7. 总结与展望 | 第66-68页 |
7.1 总结 | 第66页 |
7.2 展望 | 第66-68页 |
参考文献 | 第68-71页 |
致谢 | 第71-72页 |
攻读硕士期间发表的论文 | 第72页 |