软件工程与计算II-18-代码设计

代码设计

1. 设计易读的代码

  1. 维护的需要(维护的工作量已经超过了开发的工作量)
    1. 50%-90%的维护时间在于阅读代码
  2. 团队协作的需要

1.1. 代码规范

1.1.1. 布局格式

  1. 用缩进与对齐表达逻辑结构(Python)
    1. 统一缩进格式一或者缩进格式二,主要符合团队编程的习惯即可
    2. IDEA统一格式化:Ctrl + Alt + L

1.1.2. 命名

  1. JavaDoc可以生成API文档

  1. 类内部注释

2. 设计易维护的代码

2.1. 小型任务

  1. 使用有意义的名称封装复杂决策

2.4. 明确依赖关系

  1. 类之间模糊的依赖关系会影响到代码的理解与修改,非常容易导致修改时产生未预期的连锁反应。

3. 设计可靠的代码 重要

3.1. 契约式设计

3.1.1. 异常方式

  1. 代码会很臃肿

  1. 防御式编程往往会带来比较冗余和复杂的代码,但是会有效地提高程序的抗干扰能力和回复能力,有利于人机交互。

3.3. 表驱动编程

  1. 复杂逻辑到决策表再到表驱动

4. 使用模型辅助设计复杂的代码

  1. 决策表:多个if/else
  2. 伪代码:在纸或者白板上
  3. 程序流程图

4.1. 决策表

条件和行动 规则
条件声明 条件选项
行为声明 行为选项

  1. 结合课本详细的描述
  2. 使用了IF、THEN、ELSE、DO、DO WHILE、DO UNTIL等关键字来表示程序的逻辑组织。
  3. 通过类似编程语言的缩进方式来表明程序逻辑
  4. 使用尽可能短的语句,只是用名词和动词,避免使用容易产生歧义的形容词的使用
  5. 实例详见课本P312页

4.3. 程序流程图

  1. 测试驱动的编程
  2. 方便集成和开发
  3. 等价类进行划分和区别
  4. 覆盖方式:
    1. 路径覆盖
    2. 分支覆盖
    3. 语句覆盖

5.1.1. Sales方法

  • 我们使用状态图来辅助我们分析,通过状态图生成测试用例线索表,最后生成一个测试用例

  • 重要:这里涉及到两种计算方法

6.1. 度量的意义

7.1.2. 变量初始化

  1. 生命周期越长越容易出现问题

7.1.4. 减少作用域的一般原则

  1. 哪怕是临时变量也尽量避免重复使用。

7.1.7. 两个变量用于两种用途

7.1.9. 变量的命名

  1. 一定要用规范的方式命名变量

7.2. 数值理论

7.3. 创建子程序的正当理由

7.5. 算法的设计

7.6. 一般控制问题

7.8. 更加清晰的非空循环体

8. 问题代码与建议

8.1. [Green 1997] How to Write Unmaintable Code

软件工程与计算II-18-代码设计

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

上一篇 2022年2月7日
下一篇 2022年2月7日

相关推荐