核心课程
Porducts
当前位置:首页    核心课程    IT技术
IT技术
本模块设计采用可视化与沙盘演练相结合的培训方式,将知识体系以可视化方式呈现来完成,对学员的实际专业知识进行咨询指导,帮助团队完善产品开发管理流程,定制符合自己特点的过程、方法和规范,提升组织级产品开发管理水平;以学员更容易理解的方式完成课程,可以达到非常好的培训效果,打开学员的兴趣,为实际工作做好准备。
架构&设计   重构-改善遗留软件质量和设计

image.png  重构-改善遗留软件质量和设计课程

image.png  课程天数:2天

image.png  课程介绍

     软件开发往往大部分时候面对的是既有系统的二次开发,维护遗留系统。随着系统的不断升级,需要维护的遗留系统的代码也越来越多。在这个过程中,二次开发的工程师,往往会非常痛苦,会遇到添加新功能困难、修改bug困难,甚至不的不面对推翻之前的遗留系统,重新来过。导致开发效率极其低下,并且成本很高,系统很不稳定。所以重构也就在所难免。所有的软件系统将来都会变成遗留系统,并且都可能会遭遇性能越来越低下、稳定行越来越差等情况,因此软件开发人员不得不面对既有系统的各种问题,本课程正是告诉你如何重构既有的遗留系统, 如何重构代码,重构设计,重构架构。

image.png  课程收益

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

image.png  培训对象

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


image.png  课程大纲

第一单元:认识软件代码质量、建立重构意识

内容一:软件代码的新思维 

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

     • 代码质量概述

     • 破窗效应

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

     • 优秀代码的评价标准

     • 好代码和糟糕代码之间的区别

     • 劣质代码的代价

     • 大师评价整洁代码的标准


内容二:重构思想

     • 重构概述

     • 何时重构

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

     • 如何保证重构的正确

     • 如何测试重构

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


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

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

     • 阅读代码指出代码坏症状

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


第二单元:发现代码的坏味道,找出代码重构点

内容一:重构关键—发现代码的坏味道 

     • 代码坏味道概述

     • 代码坏味道的分类

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

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

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

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

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


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

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

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

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

     • 本案例学习多种重构方式


第三单元:重构实践

内容一:重构技术

     • 重构名录

     • 介绍常见的重构技术

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


内容二:重构工具

     • 重构工具概述

     • 使用IDE重构工具进行重构

     • 重构工具的使用标准

     • 重构工具的使用心得

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


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

     • 函数的重构

     • 函数调用重构

     • 函数参数的重构

     • 重复代码处理策略

     • 通过案例介绍函数的重构


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

     • 复杂条件表达式重构

     • IF/Else语句的危害

     • Switch语句的危害

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


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

     • 代码格式规范

     • 代码命名-名副其实

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

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

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


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

     • 数据结构重构

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


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

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

     • 对象的重新思考

     • 职责驱动的对象设计

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


第四单元:代码质量度量及测试

内容一:代码质量度量

     • 代码质量的度量

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


内容二:代码评审

     • 代码评审前期准备

     • 代码评审的代码量

     • 代码评审的检查表

     • 代码评审的总结与学习

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


内容三:单元测试

     • 单元测试概述

     • 单元测试的范围 

     • 哪些代码需要单元测试 

     • 单元测试的时机 

     • 单元测试设计原则

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


第五单元:重构设计

内容一:什么是好的设计以及如何预先设计实现 

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

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

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

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

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

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


内容二:重构与设计 

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

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

     • 软件设计的重构

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

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


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

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

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

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


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

     • 案例情况

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


第六单元:重构到模式

内容一:重构到模式

     • 软件设计的基本原则

     • 设计模式概述

     • 设计模式的本质论

     • 设计模式如何适应变化和封装

     • 重构到模式的思路


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

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

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

     • 以Strategy取代条件逻辑

     • 以Composite取代隐含树

     • 以Interpreter取代隐式语言

     • 转移装饰功能到Decorator

     • 用Builder封装Composite

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


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

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

     • 构造Template Method

     • 以Composite取代一/多之分

     • 引入Null Object

     • 用Adapter统一接口

     • 用Fatory Method引入多态创建

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

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

     • 转移聚集操作到Vistor

     • 以Strategy取代条件逻辑

     • 以Command取代条件调度程序

     • 转移聚集操作到Collecting Parameter

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

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

     • 以Strategy取代条件逻辑

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

     • 转移装饰功能到Decorator

     • 引入Null Object

     • 以Command替换条件调度程序

     • 转移聚集操作到Visitor 

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


第七单元:大型项目重构案例分析

内容一: 架构重构

     • 软件架构概述

     • 遗留系统的软件架构恢复

     • 软件架构的重构时机

     • 软件架构的重构步骤

     • 架构坏味道

     • 架构重构策略

内容二:案例分析—某互联网项目架构重构

     • 项目背景以及相关需求

     • 软件架构的演进与重构过程

     • 质量属性对软件架构的驱动

     • 架构的可扩展性架构

     • 缓存技术在架构之中的应用

     • Web层的架构策略

     • 中间层的架构和集群策略

     • 大型并发系统Session的复制和容错架构策略

     • 数据的架构

     • 软件架构的重构策略


  课程目录
1、高级系统架构设计实战
2、重构和领域驱动开发
3、软件设计模式最佳实践
4、重构-改善遗留软件质量和设计
5、单元测试实战训练营
6、卓越程序员—编写稳定可靠的优质代码
7、互联网分布式架构设计
8、使用Spring Cloud与Kubernetes构建微服务架构
9、微服务架构与容器化技术赋能企业应用
10、互联网大型高可用高并发架构设计与实践
11、基于Istio的微服务Service Mesh实战
站内搜索
联系电话
010-52883521
24小时全国咨询热线,言语交流更有效
公众平台
QQ客服

点击图标,马上与客服沟通  >>
返回顶部