代码设计
1. 设计易读的代码
- 维护的需要(维护的工作量已经超过了开发的工作量)
- 50%-90%的维护时间在于阅读代码
- 团队协作的需要
1.1. 代码规范
1.1.1. 布局格式
- 用缩进与对齐表达逻辑结构(Python)
- 统一缩进格式一或者缩进格式二,主要符合团队编程的习惯即可
- IDEA统一格式化:Ctrl + Alt + L
1.1.2. 命名
- JavaDoc可以生成API文档
- 类内部注释
2. 设计易维护的代码
2.1. 小型任务
- 使用有意义的名称封装复杂决策
2.4. 明确依赖关系
- 类之间模糊的依赖关系会影响到代码的理解与修改,非常容易导致修改时产生未预期的连锁反应。
3. 设计可靠的代码 重要
3.1. 契约式设计
3.1.1. 异常方式
- 代码会很臃肿
- 防御式编程往往会带来比较冗余和复杂的代码,但是会有效地提高程序的抗干扰能力和回复能力,有利于人机交互。
3.3. 表驱动编程
- 复杂逻辑到决策表再到表驱动
4. 使用模型辅助设计复杂的代码
- 决策表:多个if/else
- 伪代码:在纸或者白板上
- 程序流程图
4.1. 决策表
条件和行动 | 规则 |
---|---|
条件声明 | 条件选项 |
行为声明 | 行为选项 |
- 结合课本详细的描述
- 使用了IF、THEN、ELSE、DO、DO WHILE、DO UNTIL等关键字来表示程序的逻辑组织。
- 通过类似编程语言的缩进方式来表明程序逻辑
- 使用尽可能短的语句,只是用名词和动词,避免使用容易产生歧义的形容词的使用
- 实例详见课本P312页
4.3. 程序流程图
- 测试驱动的编程
- 方便集成和开发
- 等价类进行划分和区别
- 覆盖方式:
- 路径覆盖
- 分支覆盖
- 语句覆盖
5.1.1. Sales方法
- 我们使用状态图来辅助我们分析,通过状态图生成测试用例线索表,最后生成一个测试用例
- 重要:这里涉及到两种计算方法
6.1. 度量的意义
7.1.2. 变量初始化
- 生命周期越长越容易出现问题
7.1.4. 减少作用域的一般原则
- 哪怕是临时变量也尽量避免重复使用。
7.1.7. 两个变量用于两种用途
7.1.9. 变量的命名
- 一定要用规范的方式命名变量
7.2. 数值理论
7.3. 创建子程序的正当理由
7.5. 算法的设计
7.6. 一般控制问题
7.8. 更加清晰的非空循环体
8. 问题代码与建议
8.1. [Green 1997] How to Write Unmaintable Code

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!