- 2
- 0
- 约2.27千字
- 约 4页
- 2018-07-04 发布于河南
- 举报
04.可读性
4 可读性
4-1:注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。
示例:下列语句中的表达式
word = (high 8) | low (1)
if ((a | b) (a c)) (2)
if ((a | b) (c d)) (3)
如果书写为
high 8 | low
a | b a c
a | b c d
由于
high 8 | low = ( high 8) | low,
a | b a c = (a | b) (a c),
(1)(2)不会出错,但语句不易理解;
a | b c d = a | (b c) d,(3)造成了判断条件出错。
4-2:避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
示例:如下的程序可读性差。
if (Trunk[index].trunk_state == 0)
{
Trunk[index].trunk_state = 1;
... // program code
}
应改为如下形式。
#define TRUNK_IDLE 0
#define TRUNK_BUSY 1
if (Trunk[index].trunk_state == TRUNK_IDLE)
{
Trunk[index].trunk_state = TRUNK_BUSY;
... // program code
}
4-3 不要编写太复杂的复合表达式,不要有多用途的复合表达式,不要把程序中的复合表达式与“真正的数学表达式”混淆。
i = a = b c d c + f = g + h ; // 复合表达式过于复杂
d = (a = b + c) + r ;//该表达式既求a 值又求d 值。应该拆分为两个独立的语句:
a = b + c;
d = a + r;
if (a b c) // a b c 是数学表达式而不是程序表达式并不表示
if ((ab) (bc))而是成了令人费解的if ( (ab)c )
4-4 if语句“与零值比较” 隐含错误的方式有多种,在程序设计的时候应该注意。
(1)不可将布尔变量直接与TRUE、FALSE 或者1、0 进行比较。
假设布尔变量名字为flag,它与零值比较的标准if 语句如下:
if (flag) // 表示flag 为真
if (!flag) // 表示flag 为假
其它的用法都属于不良风格,例如:
if (flag == TRUE)
if (flag == 1 )
if (flag == FALSE)
if (flag == 0)
(2) 不可将float 还是double 类型浮点变量用“==”或“!=”与任何数字比较。
float x;
if (x == 0.0) // 隐含错误的比较
if ((x=-EPSINON) (x=EPSINON))// 其中EPSINON 是允许的误差(即精度)。
(3) 应当将指针变量用“==”或“!=”与NULL 比较。
假设指针变量的名字为p,它与零值比较的标准if 语句如下:
if (p == NULL) // p 与NULL 显式比较,强调p 是指针变量
if (NULL == P) // 如果写错,编译会报错
if (p != NULL)
不要写成
if (p == 0) // 容易让人误解p 是整型变量
if (p != 0)
或者
if (p) // 容易让人误解p 是布尔变量
if (!p)
4-1:源程序中关系较为紧密的代码应尽可能相邻。
说明:便于程序阅读和查找。
示例:以下代码布局不太合理。
rect.length = 10;
char_poi = str;
rect.width = 5;
若按如下形式书写,可能更清晰一些。
rect.length = 10;
rect.width = 5; // 矩形的长与宽关系较密切,放在一起。
char_poi = str;
4-2:不要使用难懂的技巧性很高的语句,除非很有必要时。
说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。
示例:如下表达式,考虑不周就可能出问题,也较难理解。
* stat_poi ++ += 1;
* ++ stat_poi += 1;
应分别改为如下。
*stat_poi += 1;
stat_poi++; // 此二语句功能相当于“ * stat_poi ++ += 1; ”
++ stat_poi;
*stat_poi
您可能关注的文档
最近下载
- 重庆天齐锂电新材料有限公司新建1000吨_年高能锂电材料电池级金属锂项目环评报告.pdf VIP
- DB65T 3694-2015 现行哈萨克文与西里尔哈萨克文编码字符转换规则.docx VIP
- TGXAS 1044-2025《中医护理三级查房规范》(发布稿).pdf VIP
- 华为云服务登录.doc VIP
- 采砂场工业用水水资源论证论证表详解.doc VIP
- Onkyo安桥TX-NR828中文说明书.pdf
- 采砂场工业用水水资源论证论证表分析报告.doc
- 【中考】2025年广东佛山数学试卷(原卷+答案).docx VIP
- 2021年广东省佛山市中考数学真题及答案.pdf VIP
- SpaceX火星探索任务成本预算与风险管理分析报告.docx
原创力文档

文档评论(0)