硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5779|回复: 2
收起左侧

安富莱C语言编码规范 4 --可读性

[复制链接]

740

主题

1326

回帖

3546

积分

管理员

春暖花开

Rank: 9Rank: 9Rank: 9

积分
3546
QQ
发表于 2018-3-19 16:53:39 | 显示全部楼层 |阅读模式
安富莱C语言编码规范 4 --可读性
(1) 注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。
示例:下列语句中的表达式
正确的写法:
  1. word = (high << 8) | low;
  2. if ((a | b) && (a & c))
  3. if ((a | b) < (c & d))
复制代码

错误的写法:
  1. word = high << 8 | low;
  2. if (a | b && a & c)
  3. if (a | b < c & d) /* 造成了判断条件出错 */
复制代码

(2) 避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
示例:如下的程序可读性差。
  1. if (Trunk[index].trunk_state == 0) <---- 不规范的写法,应使用有意义的标识

  2. {

  3. Trunk[index].trunk_state = 1; <---- 不规范的写法,应使用有意义的标识

  4. ... /* program code */

  5. }
复制代码

应改为如下形式。
  1. enum trunk_state_e

  2. {

  3. TRUNK_IDLE = 0,

  4. TRUNK_BUSY = 1

  5. };

  6. if (Trunk[index].trunk_state == TRUNK_IDLE)

  7. {

  8. Trunk[index].trunk_state = TRUNK_BUSY;

  9. ... /* program code */

  10. }
复制代码

(3) 不要使用难懂的技巧性很高的语句,除非很有必要时。
说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。
示例:如下表达式,考虑不周就可能出问题,也较难理解。
  1. * stat_poi ++ += 1;

  2. * ++ stat_poi += 1;
复制代码

应分别改为如下。
  1. *stat_poi += 1;

  2. stat_poi++; /* 此二语句功能相当于“ * stat_poi ++ += 1; ”*/

  3. ++ stat_poi;

  4. *stat_poi += 1; /* 此二语句功能相当于“ * ++ stat_poi += 1; ”*/
复制代码


努力打造安富莱高质量微信公众号:点击扫描图片关注
回复

使用道具 举报

32

主题

295

回帖

391

积分

高级会员

积分
391
发表于 2018-6-14 08:58:41 | 显示全部楼层
学习了,谢谢
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2019-11-13 18:41:00 | 显示全部楼层

学习了,这个有用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 07:38 , Processed in 0.160548 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表