课程目标: |
课程大纲:
主题 | 培训内容 |
第1单元 | 代码就是债务 内容一:代码是债务 1. 代码的认识---代码就是债务 2. 代码是债务,越少越好 3. 你拥有的代码越多,添加新内容所要付出的成本就越高 4. 通过案例分析让代码库尽可能小的方法: 5. 通过国际研发中心电信计费系统演示代码是债务的思想,10多年国外研发团队设计与研发第一版本,目前几百人在维护 通过项目演示通过重构如何减少了一半的代码,维护的人员的减少 项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢? Bob大叔坚信糟糕的代码所带来的成本之大足够让一个项目失败。 内容二 软件界要以新视角看待代码 1. 传统的软件工程对代码的错误认识 2. 代码的两面性,代码的静态结构和运行时行为 3. 客户和管理者往往仅仅关注代码的运行时的行为 4. 温伯格认为的主管必须关注代码 5. 软件设计与代码的关系—真正好的设计是在编码阶段一步一步而形成的,通过案例分析,设计如何根据代码进行演化 6. 编程真的是简单的劳动吗? 7. 通过多家项目案例进行分析,传统思想对代码的种种误解,我们提出了从3种新的角度来观察代码, a) 从管理者的角度,我们仅仅观察代码的运行时行为,导致代码的静态结构混乱的根源。这就是代码的冰山原理,大量垃圾代码隐藏在冰山之下。 b) 设计师的角度认为只要有好的设计,软件质量就可以保证。其实我们认为代码是真正唯一可以精确描述的设计文档。 c) 程序员的视角,编程真的很难,通过某一个项目案例分析,20多人一周的工作量就为几行代码问题 |
第2单元 | 内容一:编程价值观 1. 编程的方法学 2. 什么是好的代码,我们却认为“Good code is not bad code !” 3. 编程价值观---沟通,简单,灵活 4. 价值观决定行为 5. 优秀代码的评价标准, 什么是高质量编码? 特征是什么? 6. 软件代码的可读性 7. 代码的可扩展性 8. 糟糕代码的特征 9. 劣质代码的代价 10. 大师评价整洁代码的标准 11. 通过大量项目案例分析,什么是好的代码,对好代码新的认识 |
第3单元 | 内容一:高质量函数/过程 内容四:条件表达式 |
第4单元 | 内容一:类基础-数据抽象类型(Abstract Data Types) 1. 类的基础:抽象数据类 2. 需要用到ADT的场景 3. 使用ADT的益处 4. 基本类型依赖坏味道 5. 数据泥团坏味道 6. 案例—通过电信项目介绍数据的抽象 7. 通过大量项目代码演示数据抽象类型解决的问题 内容二:面向对象设计----职责分配 1. 单一职责原则 2. RDD-职责驱动的面向对象设计方法 3. 上帝类,代码之中的大量的上帝类 4. 通过案例分析,如何进行设计高质量类和重构 内容三:面向对象的编程 1. 上帝类/过大的类--违反单一职责 2. 依恋情结-一个方法视乎过于强调处理其他类的数据,而不是处理自己的数据 3. 发散式改变 4. 散弹式修改 5. 消息链 6. 中间人 7. 不当的紧密性 8. 案例—通过电信项目介绍OOP |
第5单元 | 内容一:单元测试 1. 单元测试基本知识 2. 单元测试框架提供了什么功能 3. 好的测试是什么样子的 4. 为什么要写单元测试,为什么不写单元测试 5. 为什么要写"好"的单元测试 6. 通过案例分析单元测试的基本概念,以及如何评价好的单元测试,单元测试为价值。 内容二:编写可测试代码 1. 如何编写可信赖的测试 2. 如何编写可维护性的测试 3. 如何编写可读的测试 4. 测试代码的重构 5. 通过大量真实项目案例分析如何编写可测试性代码 |
第6单元 | 内容一:代码重构 1. 重构必然性 2. 破窗效应与技术债务 3. 实际重构遇到的4大问题 a) 如何发现重构点 b) 如何去重构(重构方式) c) 如何知道重构何止截止 d) 如何保证重构的正确性 4. 介绍常见的重构技术 5. 重构到模式的目录 6. 通过多个案例分析,重构面临的问题和解决之道 内容二:大型项目的重构案例分析 1. 通过大型项目的重构,分析重构的最佳实践 内容三:重构目录 1. 重构名录 2. 介绍常见的重构技术 3. 分别通过相关案例展示重构手段 4. 通过项目的重构案例,分析重构的手段 |
第7单元 | 内容一:修改遗留项目代码
|