代码检查

1,逻辑错误

   (1) 使用前先初始化所有变量

   (2) 注意 break 和 continue 语句的控制流向

   (3)检查 C 操作符的相关性和优先顺序确保正确使用

   (4)确保循环边界的正确性

   (5)不要越界检索数组 

   (6)确保变量未被截短取值

   (7)正确使用引用指针变量

   (8)检查指针递增与递减

   (9)检查逻辑操作 or 和 and 的正确使用

   (10)正确使用赋值与等于(==)操作符

   (11)确保位域数据类型是 unsigned 或 enum

   (12)正确使用逻辑 and 和 MASK(采样)操作

   (13)检查条件预处理

   (14)检查注释的边界

   (15)只对无符号(unsigned)变量做“==0”或“!=0”的判断

2,主要的接口错误

   (1)确保所有函数调用的参数和返回值类型和函数定义一致

   (2)函数和全局变量的声明(Declarations)和定义(Definitions)须完备

   (3)使用合理数量的函数传参

   (4)核实宏的正确使用(例如,full context(正确的上下文环境??))

   (5)遵循函数参数和全局变量的命名标准

   (6)采用防御性的编程技巧

   (7)确保系统进程入口点的正确性

   (8)利用函数返回值否则将其转换为 void 类型

   (9)函数调用时确保括号正确使用

   (10)在可能的情况下采用子系统提供初始化函数

   (11)尽可能利用库函数或者已有的函数

3,主要的可维护性问题

   (1)使用宏使代码更易于阅读并且(或者)更加灵活

   (2)带有参数的宏的参数名称应该具备描述性

   (3)不能由于宏定义而隐藏重要细节、关键操作或者副作用(Side Effect)

   (4)避免因不恰当地在循环中使用goto 和 break 而导致程序打结

   (5)运用结构中的位域元素以避免通过 shift 或 mask 操作直接存取位域

   (6)用头文件包含(#include)所有全局或局部头文件都将用到的定义

   (7)在一系列相互排他的可能选择条件情况下采用 if-else 代码序列,而不是一连串的 if 语句

   (8)采用 #define 常量而不是直接在代码中嵌入数值

   (9)运用括号来理清并确保正确的运算顺序

   (10)用括号“{”来封闭流控制语句的实体代码

   (11)参数尽可能利用前面用 struct/union/typedef 定义过的数据类型

   (12)尽可能使用已有的 #feature 语句

   (13)源文件和函数应遵循标准的版面编排规则

   (14)尽可能使用库函数而不是重写代码

   (15)在恰当的情况下,尽可能采用枚举而不是常数

   (16)提供含义清楚、意义明确的注释

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值