4006-998-758
3000+课程任你选择
重构与模式最佳实践
研发学院 代码评审 重构技术 软件代码
戴昊

现任创业AI公司研发技术总监负责带领团队研发计算机视觉、AI安防及大数据相关产品。15年+ 大型软件产品架构经验。曾为日本第一,世界第二的瑞穗银行(Mizuho Bank);世界第二大证券交易所 – 东京证券,五十铃汽车开发企业级系统。曾给深圳证券交易所,深圳证券,招商银行信用卡中心,平安金融,中国电信,DELL 讲授过企业级架构及重构与模式的课程。擅长企业级系统架构,领域驱动设计,重构与模式。


查看老师详情
课程内容


 

 

 

 

第一天

第1个主题:重构概述和软件代码新视角

内容一:软件代码的新思维----代码就是设计,代码质量决定软件可维护性

1. 软件可维护性(为什么必须重视软件的可维护性)

2. 代码质量概述

3. 破窗效应

4. 对代码的重新认识---代码就是设计

5. 优秀代码的评价标准

6. 好代码和糟糕代码之间的区别

7. 劣质代码的代价

8. 大师评价整洁代码的标准

内容二:重构思想

1. 重构概述

2. 何时重构

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

4. 如何保证重构的正确

5. 如何测试重构

6. 通过一个小案例演示重构的基本思想(什么时间重构,如何发现重构点,如何保证重构的正确性,最后如何验收)

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

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

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

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

 

第2个主题:必知的21中代码坏味道---如何发现重构点
内容一:21种代码坏味道—代码的质量底线

1. 代码坏味道概述

2. 代码坏味道的分类

3.  代码坏味道----低级篇(重复的代码、过长的函数、过大的类、过长的参数列表、发散式变化、分散的修改)

4. 代码坏味道----中级篇(伪面向对象的调用、数据泥团、基本类型的误用、switch-case结构的误用、平行继承体系、过薄的类、只有局部意义的成员变量)

5. 代码坏味道----高级篇(过度耦合的消息链、过薄的中间对象、紧耦合类、相似的类、只有数据的类、滥用类的继承关系)

6. 通过案例,让学员寻找代码坏味道

7. 可以根据客户现在的项目作为案例进行现场分析,找出相应的代码坏味道

内容二:某项目分析----重点了解现实项目代码的充斥大量坏味道

1. 介绍项目需求情况,阅读现有代码指出代码坏症状

2. 不看不知道,代码到底有多烂—触目惊心的代码

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

4. 本案例学习多种重构方式

 

第3个主题:重构技术---怎样对先有代码重构
内容一:重构技术

1. 重构名录

2. 介绍常见的重构技术

3. 分别通过相关案例展示重构手段

内容二:重构工具

1. 重构工具概述

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

3. 重构工具的使用标准

4. 重构工具的使用心得

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

内容三:重构案例—该案例重点  函数和函数调用重构

1. 函数的重构

2. 函数调用重构

3. 函数参数的重构

4. 重复代码处理策略

5. 通过案例介绍函数的重构

内容四:重构案例—该案例重点 复杂条件表达式重构

1. 复杂条件表达式重构

2. IF/Else语句的危害

3. Switch语句的危害

4. 通过案例介绍如何重构面向过程代码到面向对象

内容五:重构案例—该案例重点学习代码格式和命名

1. 代码格式规范

2. 代码命名-名副其实

3. 很重要,但是总被忽略的基本功

4. 通过案例介绍代码格式以及如何使用IDE工具进行定制格式

5. 通过案例介绍代码的命名,以及如何重构

内容六:重构案例—该案例重点 数据结构重构

1. 数据结构重构

2. 通过案例介绍如何重构面向过程代码到面向对象

内容七:重构案例—该案例重点 对象职责和对象重构

1. 过程化思维和面向对象设计

2. 对象的重新思考

3. 职责驱动的对象设计

4. 通过案例介绍如何重构面向过程代码到面向对象

 

第4主题:代码质量度量---不度量就无法考核,通过工具进行度量
内容一:代码质量度量

1. 代码质量的度量

2. Chidamber & Kemerer度量,

3. Depth of Inheritance Tree(DIT)

4. Number of Childre(NOC)

5. Response for a Class(RFC)

6. Afferent/Efferent Couplings(CA/CE)

7. Lack of cohesion in methods(LCOM)

8. 业界其他度量标准

9. 通过分析多个实际项目,分别度量相关是否标准

内容二:代码评审

1. 代码评审前期准备

2. 代码评审的代码量

3. 代码评审的检查表

4. 代码评审的总结与学习

5. 通过案例分析如何做好代码评审

内容三:单元测试

1. 单元测试概述

2. 单元测试的范围

3. 哪些代码需要单元测试

4. 单元测试的时机

5. 单元测试设计原则

6. 通过案例学习单元测试的应用

 

 

 

 

 

 

第二天

第5主题:代码分析工具与持续集成
内容一:代码静态分析工具

1. 代码静态分析工具概述

2. 以Java语言代码静态分析工具为例介绍

3. CheckStyle:用于编码标准

4. PMD 的 CPD:帮助发现代码重复

5. Coverlipse:测量代码覆盖率

6. JDepend:提供依赖项分析

7. Metric:有效地查出复杂度

8. 其他语言相关代码静态分析工具

9. 通过案例演示工具在项目之中的应用

内容二:持续集成

1. 持续集成概述

2. 持续集成的要点和原则

3. 构建策略和最佳实践

4. 持续集成对代码分析的支持

5. 通过案例演示如何利用持续集成完成代码检查和代码分析

 

第6个主题: 设计重构---敏捷设计核心思想(演化式设计)
内容一:什么是好的设计以及如何预先设计实现

1. 什么是好的设计和衡量的手段

2. 可扩展性(Extensibility)容易添加新的功能. 结合案例,通过那些手段如何实现该目标

3. 灵活性(Flexibility)代码修改平稳地发生. 结合案例,通过那些手段如何实现该目标

4. 可插入性(Pluggability)容易将一个类抽出去,同时将另一个有同样接口的类加入进来. 结合案例,通过那些手段如何实现该目标

5. 软件的变化分析---发现变化/封装变化/隔离变化

6. 分析真实项目,如何预先设计,给我们哪些启示,我们可以学习到什么

内容二:重构与设计----敏捷设计思想(演化式设计或者反思性设计)

1. 重构与设计的思想---根据代码坏味道改善设计

2. 软件需求不可预测性----设计师不可能进行预测式设计

3. 软件设计的重构

4. 软件演化式设计---敏捷的设计思想

5. 分析某电信项目,如何设计重构,给我们哪些启示,我们可以学习到什么

内容三:通过代码指标进行设计重构

1. 代码指标和可视化有助于识别代码的重要部分,从而识别设计坏味道,进行重构设计

2. 相关代码指标(HIT 继承树的高度/NOP 包的数量/NOC 类的数量/NOM 方法的数量/LOC 代码行数/CYCLO 圈复杂度/CALL 每个方法的调用数)

3. 分析案例主要讨论两个指标,圈复杂度(cyclomatic complexity) 和传入耦合(afferent coupling), 介绍显示和理解这两个指标的一些工具,以及如何通过组合指标帮助发现设计特征。

内容四:案例—某项目设计重构案例分析

1. 案例情况

2. 演示如何发现设计坏味道,以及如何重构

 

第7个主题: 重构到模式---学习设计模式必由之路
内容一:重构到模式

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

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

第8个主题:架构重构---大型项目架构案例分析
内容一: 架构重构

1. 软件架构概述

2. 遗留系统的软件架构恢复

3. 软件架构的重构时机

4. 软件架构的重构步骤

内容二:案例分析—某web网站架构重构

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. 通过案例学习架构的重构策略和步骤


课程对象

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


返回上一级