北京学习linux,北京linux学习

课程详情

培训目标:

本课程涵盖代码重构(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), 介绍显示和理解这两个指标的一些工具,以及如何通过组合指标帮助发现设计特征。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值