课程费用

5800.00 /人

课程时长

2

课程排期

 
2020.10.24 -2020.10.25
上海 上海 普陀区,长寿路700号上海古井假日酒店4层第三会议室

成为教练

课程简介

本课程注重实战,采用案例贯穿方式完成实践,收集了大量的真实案例,针对项目过程中技术人员常犯的错误进行了汇总,研讨,并最终形成培训教程。本次培训从程序员的编程思维开始讲解,通过大量的真实案例,贯穿了设计、编码、重构、单元测试,持续集成等整个软件生命周期过程,详细地介绍了重构需要注意的要点以及难点,是重构最佳实践的心血结晶。

目标收益

1. 对于代码中常见的问题,可习得一整套解决方案进行处理
2. 可迅速提高编写代码的质量,如可读性,可扩展性
3. 可熟练掌握最常见的重构方法,及设计模式
4. 深刻理解重构与模式背后的理论基础 SOLID 原则
5. 掌握敏捷开发最深刻的机理,信息时代的控制论:逐步逼近
6. 对于遗留代码的改造不再胆战心惊

培训对象

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

课程大纲

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

课程费用

5800.00 /人

课程时长

2

课程排期 (更新日期:2020.10.22)

scheduling->endTime - $model->scheduling->startTime) / 86400 ) ?>
2020.10.24 -2020.10.25
上海 上海 普陀区,长寿路700号上海古井假日酒店4层第三会议室

预约体验票 我要分享

近期公开课推荐

近期公开课推荐

提交需求