软件高质量代码体系最佳实践
角色 | 收获 |
技术负责人/技术总监 | 1、了解业内先进的代码审查的形式、技术、技巧和流程的成功经验,优化现有开发中心代码审核方法; |
项目经理/项目管理人员/架构师 | 1. 1、学习其他研发机构的代码管理思想 |
测试部门/质量管理部门 | 1. 1、代码审查 |
资深开发人员 | 1. 1、掌握代码编码规范、代码评审要点等知识,引导开发人员养成正确的代码编写习惯; |
一般开发人员 | 1. 1、编程技艺和相关编程实践 |
【课程大纲】
第一篇: 编程是一种态度-------价值观
第1单元 代码就是债务
内容一:代码是债务
1. 代码的认识---代码就是债务
2. 代码是债务,越少越好
3. 你拥有的代码越多,添加新内容所要付出的成本就越高
4. 通过案例分析让代码库尽可能小的方法:
5. 通过国际研发中心电信计费系统演示代码是债务的思想,10多年国外研发团队设计与研发第一版本,目前几百人在维护
v 通过项目演示通过重构如何减少了一半的代码,维护的人员的减少
项目的失败可能归咎于各种各样的原因。一些项目因糟糕的需求而失败,另一些则由于钱和时间超支了,还有少数单纯是因为糟糕的管理所致。如果我们探究其根本原因,是否会发现所有项目失败的罪魁祸首是糟糕的代码呢?
Bob大叔坚信糟糕的代码所带来的成本之大足够让一个项目失败。
内容二软件界要以新视角看待代码
1. 传统的软件工程对代码的错误认识
2. 代码的两面性,代码的静态结构和运行时行为
3. 客户和管理者往往仅仅关注代码的运行时的行为
4. 温伯格认为的主管必须关注代码
5. 软件设计与代码的关系—真正好的设计是在编码阶段一步一步而形成的,通过案例分析,设计如何根据代码进行演化
6. 编程真的是简单的劳动吗?
7. 通过多家项目案例进行分析,传统思想对代码的种种误解,我们提出了从3种新的角度来观察代码
第2单元编程价值观
内容一:编程价值观
1. 编程的方法学
2. 什么是好的代码,我们却认为“Good code is not bad code !”
3. 编程价值观---沟通,简单,灵活
4. 价值观决定行为
5. 优秀代码的评价标准:什么是高质量编码? 特征是什么?
6. 软件代码的可读性
7. 代码的可扩展性
8. 糟糕代码的特征
9. 劣质代码的代价
10. 大师评价整洁代码的标准
11. 通过大量项目案例分析,什么是好的代码,对好代码新的认识
第二篇: 编程是一种技艺-------实践篇
第3单元 高质量函数
内容一:高质量函数/过程
1. 为什么需要函数
2. 函数复杂度度量
3. 函数圈复杂度以及度量
4. 函数抽象层次-单一抽象层次原则SLAP(Single Level of Abstrction Principle)
5. 函数实现模式之—组合函数(Composed Method)
6. 万恶之源—函数过长
7. 函数的单一职责
8. 函数第一原则:是要短小,函数第二原则:是还要短小,函数第三原则:是必须短小
9. 函数重构之道—抽取方法(Extract Method)和抽取对象函数
10. 函数命名—怎样取好的函数名
11. 通过大量项目代码分析,函数的遇到的各种问题,如何编程高质量函数
内容二:函数易理解与沟通
1. 函数主体流
2. 函数的异常处理
3. 函数主题流程简化方法1-助手方法
4. 助手方法的应用场景
5. 助手方法的效果
6. 函数主题流程简化方法2-函数对象(MethodObject)
7. 通过真实项目代码进行分析,如果提高代码的可读性
内容三:函数灵活/易可扩展---函数接缝
1. 历史遗留代码维护问题
2. 某电信研发中心的维护问题—开发维护的效率问题。
3. 增加一个功能特性的成本并不单单是为这些功能编码所花费时间的成本,还应该包括特性扩展的障碍成本。
4. 代码的可维护成本分析—通过大量案例分析
5. 如何实现代码的易扩展—函数接缝
6. 接缝(seam),指程序中的一些特殊的点,在这些点上你无需做任何修改就可以达到改动程序行为的目的
7. 通过案例分析,如何实现函数的灵活/易扩展。
内容四:函数参数
1. 函数参数过长
2. 最理想的参数数量是零,其次是一,再次是二,有足够的理由才能使用三个以上参数.
3. 函数参数重构之道-引入参数对象(introduce parameter object
4. 函数参数的顺序.
5. 不要把程序参数当做工作变量/临时变量
6. 函数参数模式-collecting parameter
7. 函数返回值
8. 通过大量项目代码是函数参数问题
9. 演示函参数的重构
内容五:变量
1. “一旦了解在程序设计中如何使用变量,他就掌握了程序设计的精华。”-Dijkstra
2. 为什么需要变量—变量的引入的理由
3. 单一变量用途
4. 变量与方法
5. 变量作用域
6. 变量声明与初始化
7. 通过案例分析, 函数的变量如何处理与控制。
内容六:函数代码重复
1. 重复的危害
2. 强加的重复/无意的重复/无耐心的重复/开发者之间的重复
3. 不要重复自己DRY—Don't Repeat Yourself Principle
4. Make It Easy to Reuse(让复用变得容易)
5. 魔法数(Magic number)
6. 重复性代码(Duplicated Code)
7. 接口不同的相似类(Alternative
Classes with Different Interfaces)
8. 系统分离关注点
9. 系统架构的基础通用服务组件
10. 通过某项目代码是介绍重复编码问题
11. 演示研发过程之中的常见重复问题,以及如何解决
内容七:条件表达式...
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25
2020/12/25