重构-北京中培
班  型:
白天班,晚班,周六周日
班  制:
小班
课  时:
请咨询
开课时间:
长期
上课地点:
北京中培集团
适合对象:
有需求的学员
北京中培集团(丰台区)
40060318304043
课程介绍

课程详情
培训目标:
 本课程涵盖代码重构(2天),设计重构(1天),架构重构(1天)3个层次.
 主要包含以下几个方面的内容:
 n 结合电信、金融等多个项目案例进行分析。本次培训所用案例均为真实项目案例,仅供课堂学术讨论。 
 n 重构技术:软件并不是在一开始就可以设计的完美无缺,因此必须经过不断的重构进行改善,重构是实现优秀设计的一种重要手段 
 n 代码坏味道: 介绍常见的糟糕的代码坏味道,以告诫学员,今后如何避免出现这样的拙劣代码。这是21条代码基本要求,是代码管理的较低要求,可以接受的底线.
 n 代码管理:项目管理者和质量管理部门,如何组织代码评审,代码审查,如果通过代码评审,提高设计能力。
 n 重构到模式: 模式的应用是一个渐进演变的过程, 坏味道也不是一开始就出现的.如果在一开始就想到用某某模式, 有时很可能导致设计过度.重构与模式有一种天然的关系. 重构是手段, 模式是目的, 同时模式也为重构指明了方向和原则.通过案例分析设计模式是如何演进/重构出来的
 n 单元测试: 介绍如何使用XUnit进行单元测试,如何更高效地撰写bug更少的代码;如何在团队中高效地进行测试,设计具有易测性的软件等等。
 n 代码质量度量: 结合和完善Logiscope和McCabe两种软件度量体系,选取出依据软件程序代码的可量化测量,建立代码质量度量评估模型.有助于软件的量化评价,为质量管理人员了解软件质量水平、软件设计师改进软件程序质量,提供量化的客观依据.
 n 持续集成和静态分析工具: 介绍持续集成基本原则和工具,以及应用较佳实践。同时介绍业界大量使用代码静态分析工具,以便在编码阶段就能够找出可能的编码缺陷和坏味道。 
 n 设计重构: 介绍什么是好的设计特征,如何实现优秀设计.以及敏捷设计思想(演化设计)与重构. 
 n 架构重构: 由于软件应对需求变化的能力越来越差,通过重构架构进行软件重建的做法变得越来越有吸引力。如何进行架构重构,怎样重构等.
 培训对象:
 程序员、软件设计师、架构师、项目经理、质量部门员工。对于重构技术怀有疑问和困惑,需要梳理解答的团队和个人。
 学员基础:
 学员学习本课程应具备下列基础知识:
 n 了解Java/C#或者C 任一面向对象语言, 
 n 具有面向对象基本概念,熟悉基本设计模式
 学时:4天24学时(1小时 / 学时)
课程安排:
重构基础
软件代码的新思维----代码就是设计,代码质量决定软件可维护性
软件可维护性(为什么必须重视软件的可维护性)
代码质量概述
破窗效应
对代码的重新认识---代码就是设计
优秀代码的评价标准
好代码和糟糕代码之间的区别
劣质代码的代价
大师评价整洁代码的标准
Robert C Martin
Kent Beck`
Ward Cunningham
Ron Jeffries
Grady Booch
Dave Thomas
重构思想
重构概述
何时重构
如何发现哪些地方需要重构
如何保证重构的正确
如何测试重构
通过一个小案例演示重构的基本思想(什么时间重构,如何发现重构点,如何保证重构的正确性,较后如何验收)
案例—通过实际项目演示重构
介绍项目需求情况,进行设计
阅读代码指出代码坏症状
通过重构逐步改善代码质量
关注代码坏味道
重构关键—发现代码的坏味道 
代码坏味道概述
代码坏味道的分类
代码坏味道----低级篇(重复的代码、过长的函数、过大的类、过长的参数列表、发散式变化、分散的修改)
代码坏味道----中级篇(伪面向对象的调用、数据泥团、基本类型的误用、switch-case结构的误用、平行继承体系、过薄的类、只有局部意义的成员变量)
代码坏味道----高级篇(过度耦合的消息链、过薄的中间对象、紧耦合类、相似的类、只有数据的类、滥用类的继承关系)
通过案例,让学员寻找代码坏味道
可以根据客户现在的项目作为案例进行现场分析,找出相应的代码坏味道
某项目分析----重点了解现实项目代码的充斥大量坏味道
介绍项目需求情况,阅读现有代码指出代码坏症状
不看不知道,代码到底有多烂—触目惊心的代码
通过重构逐步改善代码质量
本案例学习多种重构方式
重构方法
重构技术
重构名录
介绍常见的重构技术
分别通过相关案例展示重构手段
重构工具
重构工具概述
使用IDE重构工具进行重构
重构工具的使用标准
重构工具的使用心得
通过案例演示如何通过重构工具完成重构
重构案例—该案例重点 函数和函数调用重构
函数的重构
函数调用重构
函数参数的重构
重复代码处理策略
通过案例介绍函数的重构
重构案例—该案例重点 复杂条件表达式重构
复杂条件表达式重构
IF/Else语句的危害
Switch语句的危害
通过案例介绍如何重构面向过程代码到面向对象
重构案例—该案例重点学习代码格式和命名
代码格式规范
代码命名-名副其实
很重要,但是总被忽略的基本功
通过案例介绍代码格式以及如何使用IDE工具进行定制格式
通过案例介绍代码的命名,以及如何重构
重构案例—该案例重点 数据结构重构
数据结构重构
通过案例介绍如何重构面向过程代码到面向对象
重构案例—该案例重点 对象职责和对象重构
过程化思维和面向对象设计
对象的重新思考
职责驱动的对象设计
通过案例介绍如何重构面向过程代码到面向对象
重构的度量
软件质量和代码质量
软件质量概述
代码质量的度量
Chidamber & Kemerer度量,
Depth of Inheritance Tree(DIT)
Number of Childre(NOC)
Response for a Class(RFC)
Afferent/Efferent Couplings(CA/CE)
Lack of cohesion in methods(LCOM)
业界其他度量标准
通过分析多个实际项目,分别度量相关是否标准
代码评审和质量抽查
代码评审前期准备
代码评审的代码量
代码评审的检查表
代码评审的总结与学习
通过案例分析如何做好代码评审
持续重构
代码静态分析工具
代码静态分析工具概述
以Java语言代码静态分析工具为例介绍
CheckStyle:用于编码标准 
PMD 的 CPD:帮助发现代码重复 
Coverlipse:测量代码覆盖率 
JDepend:提供依赖项分析 
Metric:有效地查出复杂度
其他语言相关代码静态分析工具
通过案例演示工具在项目之中的应用
持续集成
持续集成概述
持续集成的要点和原则 
构建策略和较佳实践 
持续集成对代码分析的支持
通过案例演示如何利用持续集成完成代码检查和代码分析
设计重构
什么是好的设计以及如何预先设计实现 
什么是好的设计和衡量的手段
可扩展性(Extensibility)容易添加新的功能. 结合案例,通过那些手段如何实现该目标
灵活性(Flexibility)代码修改平稳地发生. 结合案例,通过那些手段如何实现该目标
可插入性(Pluggability)容易将一个类抽出去,同时将另一个有同样接口的类加入进来. 结合案例,通过那些手段如何实现该目标
软件的变化分析---发现变化/封装变化/隔离变化
分析真实项目,如何预先设计,给我们哪些启示,我们可以学习到什么
重构与设计----敏捷设计思想(演化式设计或者反思性设计) 
重构与设计的思想---根据代码坏味道改善设计
软件需求不可预测性----设计师不可能进行预测式设计
软件设计的重构
软件演化式设计---敏捷的设计思想
分析某电信项目,如何设计重构,给我们哪些启示,我们可以学习到什么
通过代码指标进行设计重构 
代码指标和可视化有助于识别代码的重要部分,从而识别设计坏味道,进行重构设计
相关代码指标(HIT 继承树的高度/NOP 包的数量/NOC 类的数量/NOM 方法的数量/LOC 代码行数/CYCLO 圈复杂度/CALL 每个方法的调用数)
分析案例主要讨论两个指标,圈复杂度(cyclomatic complexity) 和传入耦合(afferent coupling), 介绍显示和理解这两个指标的一些工具,以及如何通过组合指标帮助发现设计特征。
聊聊
电话
地图
机构首页
精品课程
联络方式