主题 |
课程安排
|
编码质量概览 |
1.
2好代码和糟糕代码之间的区别
2. 劣质代码的代价
3. 软件编码规范的作用
4. 优秀代码的评价标准
5. 代码设计与代码质量
6. 防御性代码的风格
7. 案例分析:不同质量的代码对比
8. 动手实践:提高代码质量初探
|
编码规范的标准与应用 |
1.
短码之美与简码规范
2. 编程规范定义角度与记忆问题
3. 剖析阿里的编程规范与华为的编程规范
4. 源代码书写样式与结构布局
5. 源代码命名风格
6. 编著有意义的注释
7. 创建具有上下文语境代码(便于代码交流)
8. 结对编程与编程规范检查
9. 团队共同拥有代码 – 个人代码与团队代码
10. 编程规范的手动检查
11. 编程规范的自动化检查
12. 编程规范与绩效考核 |
提高代码质量的方法 |
1.
展示:不同流派的编程模式
2. 待实现模块的Structured Method
3. 待实现模块的Object Oriented Method
4. 对象化与结构化的衔接与图形可视化表达
5. 结合UML与MDA的自动骨架代码生成
6. 类函数实现框图中数据流与测试脚本
7. 动手实践:结合UML与TDD实践 |
函数定义之道 |
1.
函数的单一抽象层次原则SLAP(Single Level of Abstraction
Principle)
2. 函数实现模式之组合函数(Composed Method)
3. 万恶之源-函数过长
4. 最小函数原则
5. 函数命名-怎样取好的函数名
6. 函数参数过多的危害与最理想的参数数量
7. 函数参数重构之道-封装参数结构
8. 函数参数的顺序
9. 规划函数返回值
10. 动手实践:基于缓存的接口函数设计 |
函数内部结构设计 |
1.
变量定义常见的错误
2. 变量的数据类型与作用域
3. 变量的初始化原则
4. 变量的持续性与绑定时间
5. 数据类型和控制结构之间的关系
6. 全局变量
7. 复杂条件表示式的危害
8. 过分深层的“缩进”或者“嵌套”,
9. 引入解释变量/分解条件/抽取方法计算条件
10. 表驱动法-多级嵌套IF语句的必然之道
11. 循环控制与递归控制
12. 恰当地处理错误 |
扩展设计与对象的封装 |
1.
什么是好的设计和衡量的手段
2. 可扩展性(Extensibility)容易添加新的功能
3. 灵活性(Flexibility)代码修改平稳地发生
4. 可插入性(Plug ability)容易将一个类抽去-同时也可将相同接口类加入
5. 软件的变化分析-发现变化/封装变化/隔离变化
6. 分析真实项目如何预先设计,给我们哪些启示,我们可以学习到什么
7. 软件需求不可预测性-设计师不可能进行预测式设计
8. 软件演化式设计-敏捷的设计思想
9. 重构与设计的思想-根据代码坏味道改善设计
10. 基于设计模式的代码结构的可扩展性
11. 针对Key-Value的代码静态配置性设计
12. 针对Script的代码动态配置性设计
13. 动手实践:基于僵尸设置场景完成可配置性设计 |
代码单元测试 |
1.
单元测试与测试驱动开发TDD
2. 单元测试用例设计与代码质量
3. 测试输入、场景、输出、依赖构造技术
4. 测试技术-边界、等价、因果、决策、正交表、所有值对表等
5. 函数的输入与输出取值分析与Mapping
6. 单元测试的Assert编程结构
7. 单元测试的Mock与Stub编程结构
8. 复杂数据结构输入与输出的数据构造技巧
9. 测试数据与测试脚本分离
10. 代码测试的典型误区与成功实施之道
11. 动手实践:依据小游戏完成TDD编程 |
遗留代码的重构 |
1.
对比重构与调试
2. 如何知道重构何止截止
3. 如何保证重构的正确性-降低风险的措施
4. 如何快速读懂别人的代码 - 代码阅读技巧
5. 发现重构点的技巧 – 浓缩22种坏味道的Check List
6. 依据重构点制定重构策略
7. 必须修改遗留的代码起因
8. 遗留代码修改危险事项
9. 如何对依赖代码做测试
10. 依赖代码的感知与分离
11. 依赖代码修改的接缝技术
12. 修改依赖代码的工具 |
提高代码质量的工具 |
单元测试工具
代码检查工具
代码对比工具
代码静态分析工具
代码动态分析工具
|