2025-11-20 01:46:40 世界杯小组积分

第7章 实现-编码方法

第7章 实现-编码方法

第7章 编码方法概览

Danger

程序工作着不是将软件设计模型机械地转换成源程序代码

软件编码是设计的继续,会影响软件质量和可维护性。

正确地理解用户需求和软件设计思想

正确地根据设计模型进行程序设计

正确地而高效率地编写和测试源代码

7.1 程序设计语言

一、程序设计语言的分类

机器语言:用二进制代码表示的低级语言,计算机直接使用。(没有通用性、 不能移植)

汇编语言:使用助记符表示的低级语言,需经汇编程序翻译成机器语言。(没有通用性、 不能移植)

高级语言:面向用户,独立于计算机种类和结构。(接近于算术语言和自然语言)

第四代语言(4GL):抽象层次更高,只需说明“做什么”。

二、程序设计语言的选择

考虑项目应用领域、算法复杂性、数据结构复杂性、效率、可移植性、人员水平和系统模式。

7.2 编码风格

Danger

不是能跑则灵

高质量的代码应正确、易读、易于修改、扩展和维护。(给人看的)

编码风格实际上是一种编码原则,20世纪70年代以来,强调清晰胜于效率。

编码规范

与特定语言相关的描写如何编写代码的规则集合。

为什么要有编码规范

软件全生命周期的70%成本是维护

软件在其生命周期中很少由原编写人员进行维护目的

所以需要编码规范①提高编码质量,避免不必要的程序错误②增强程序代码的可读性、可重用性和可移植性。

编码规范要求

基本要求:

程序结构清析且简单易懂,单个函数的行数一般不要超过100行(特殊情况例外)。

算法设计应该简单且直接了当。

尽量使用标准库函数(类方法)和公共函数(类方法)。

最 好 使 用 括 号 以 避 免 二 义 性。

Note

可 读 性 第 一 , 效 率 第 二 。

可读性要求:

Tip

没有必要加注释就不加

编码风格详细说明

IF语句

布尔变量的正确使用:

使用 if (flag) 表示 flag 为真。

使用 if (!flag) 表示 flag 为假。

整型变量与零值比较:

应当将整型变量用 == 或 != 直接与 0 比较。例如:if (i == 0) 或 if (i != 0)。

指针变量比较:

应当将指针变量用 == 或 != 与 NULL 比较。例如:if (ptr == NULL) 或 if (ptr != NULL)。

有具体类型的指针应该先判断算不算空指针,然后解引用。

浮点变量比较:

不可将浮点变量用 == 或 != 与任何数字比较。这是因为浮点数计算存在舍入误差,直接比较可能会导致不准确的结果。

应该设法将浮点变量比较转化成大于或小于的形式

c

const float EPSINON = 0.00001;

if ((x >= - EPSINON) && (x <= EPSINON)

if语句必须要带有{},这是因为可能随时去添加一些内容。

//写出 char *p 与“ 零值 ”比较的 if 语句:

if (p == NULL)

if (p != NULL)

循环

这个有歧义:

Danger

按照软件工程,长的循环放到里面,这样可以减少CPU的跳转频率。

但是按照计组的理解,如果目标机器按照行主序,那么是另一种结果。

所以在考试的时候要分类讨论。

不可在for 循环体内修改循环变量,防止for 循 环失去控制。

建议for 语句的循环控制变量的取值采用“半开 半闭区间”写法。

for (int i = 0; i <= n - 1; i++)// 不好!

{}

for (int i = 0; i < n; i++)// 好!

{}

switch语句

每个case语句的结尾不要忘了加break,否则将导致 多个分支重叠(除非有意使多个分支重叠)。

不要忘记最后那个default分支。即使程序真的不需 要default处理,也应该保留语句 default : break ;因为可能会加东西。

goto

goto有害论

other

输入输出

典型例题

// 第一个

for (i=0; i

{

if (condition){

DoSomething () ;

}

else {

DoOther thing () ;

}

}

// 第二个

if (condition)

{

for (i=0; i

DoSomething () ;

}

else

{

for (i=0; i

DoOther thing () ;

}

第一个

第二个

优点

程序简洁

循环的效率高

缺点

①多执行了N-1次逻辑判断,②打断了循环“流 水线 ”作业,使得编译器 不能对循环进行优化处理 , 降低了效率。

程序不简洁

7.3 程序内部文档

描述性注释、序言性注释和功能性注释的编写。

7.4 程序效率

程序效率指执行速度和存储空间占用。

追求效率时不牺牲代码的清晰性、可读性和正确性。

注意点

效率是一种性能需求, 目标值应当在需求分析 阶段给出。软件效率应以需求为准,不应以人力所 及为准。(满足要求就好)

好的设计可以提高效率。

代码效率与代码的简单性相关。

全局效率为主,局部效率为辅。

优化数据结构和算法,再优化执行代码。

时间效率和空间效率可能对立,此时应当分 析那个更重要,作出适当的折衷。例如多花费一些 内存来提高性能。

如何提高代码效率

简化表达式、优化循环、减少多维数组使用等。

7.5 设计方法论

自顶向下和自底向上的程序开发方法。

程序设计自动化、代码文档化、数据说明、语句构造。

程序设计工具

编译程序、代码管理系统