编码 - wolai 笔记

1.目的

把模块的过程性描述翻译为用选定的程序设计语言书写的源程序(源代码)。

2.依据

编码的主要依据是概要设计和详细设计说明文档。

3.任务

  • 理解概要设计和详细设计说明书;
  • 遵循编码原则和风格进行翻译,形成源代码。

4.程序设计语言

4.1机器语言

  • 1011011000000000:加法
  • 1011010100000000:减法

优点

计算机直接识别

缺点

效率低,重用性差

4.2 汇编语言

机器指令助记符
  • 机器指令:1000100111011000
  • 汇编指令:MOV AX,BX

优点

  • 比机器语言易读写、易调试和修改
  • 执行速度快、占内存少
  • 针对硬件编制

缺点

  • 不能编写复杂程序
  • 依赖于机型、不通用、不可移植

4.3高级语言

与自然语言相近,面向用户的语言

优点

  • 编码效率高
  • 通用性强,兼容性好,便于移植

缺点

  • 运行效率低
  • 对硬件操作不如汇编

4.4语言选择标准

  • 系统用户要求:如果开发系统由用户维护,通常要求用熟悉的语言书写
  • 可以使用的编译程序:运行目标系统环境可提供编译程序限制可选用语言的范围
  • 可以得到的软件工具:有支持程序开发的软件工具可以利用。
  • 工程规模:规模庞大,现有语言不适用,设计实现供该工程项目使用程序设计语言
  • 程序员知识:如果和其他标准不矛盾,应选择程序员熟悉的语言
  • 软件可移植性要求:若目标系统在不同计算机上运行,选择可移植性好的语言
  • 软件的应用领域:选择语言时应充分考虑目标系统的应用范围。

5.编码风格

逻辑简明清晰、易读易懂是重要标准,遵循规则以下规则:程序内部的文档、数据说明、语句构造(简单)、输入输出、效率(和存储容量)

5.1程序内部的文档

(1)恰当的描述符

含义鲜明、命名规则一致 、避免过长或过短(建议英文) 、缩写规则一致

(2)适当注释

源程序中有效注解量在20%以上

序言性注解

模块开始,描述模块功能、主要算法、接口特点、重要数据及开发简史(设计者、复审者及时间、修改日期)

中间注解

插在程序中间,解释这段代码的必要性及功能。

(3)良好的视觉组织

空格、空行、缩进

5.2数据说明

  • 数据说明次序应标准化(按数据结构或数据类型说明):常量->简单变量->数组->公用数据块->文件整形->实型->字符->逻辑
  • 多个变量名在一个语句说明,按字母顺序排列。
  • 复杂数据结构用注解说明实现方法和特点。

5.3语句构造

  1. 避免把多个语句写在同一行;
  2. 尽量避免复杂条件测试;
  3. 尽量减少“非”条件测试;(if not(a>b)->if a<=b )
  4. 避免大量使用循环嵌套和条件嵌套;
  5. 利用括号使表达式运算次序清晰直观。
  6. 尽量少用goto语句
  7. if、for、do、while、case、switch、default 等语句占一行,且if 、for 、do 、while 等语句的执行语句部分无论多少都要加括号{}
  8. 不将BOOLTRUEFALSE对应10编程;多数编程语言:false定义为0,非0值是true

5.4输入输出

  1. 对所有输入数据都进行检验,保证输入有效;
  2. 检查输入项重要组合合法性;
  3. 保持输入格式简单;
  4. 使用数据结束标记,不要求用户指定数据数目;
  5. 提示交互式输入请求,如可用选择或边界数值
  6. 程序设计语言对格式有严格要求时,应保持输入格式一致;
  7. 设计良好输出报表;
  8. 给所有输出数据加标志

5.5效率

(1)程序运行时间

  1. 简化算术和逻辑表达式;
  2. 嵌套循环,确定是否有语句可从内层往外移;
  3. 尽量避免使用多维数组;
  4. 尽量避免使用指针和复杂的表;
  5. 使用执行时间短的算术运算;
  6. 不要混合使用不同的数据类型;
  7. 尽量使用整数运算和布尔表达式

(2)存储器效率

大中型计算机考虑操作系统页式调度特点,将程序功能合理分块,每个模块或一组密切相关程序体积与每页容量相匹配,减少页面调度。
微型计算机关键是程序简单性,选择生成较短目标代码且存储压缩性能优良的编译程序。

(3)输入输出效率

  1. 所有输入/输出都应有缓冲,减少通信的额外开销;
  2. 对二级存储器(如磁盘)选用最简单访问方法;
  3. 辅助存储器的输入/输出以信息组为单位进行;
  4. 如“超高效”输入/输出很难被理解不采用。



Comment