第三章《代码检查、走查与评审》笔记与心得

                                                                          代码检查心得

       代码检查主要分为8类。以下为阅读笔记和心得。

       紫色字体为暂不理解的问题。

一、数据引用错误

  1. 引用的变量务必要初始化。数组使用时要注意内存空间,不要越界。
  2. 注意“虚调用”错误。虚调用一般是通过指向基类的指针或引用来访问派生类的对象,是动态链编的过程。如果在构造函数中调用虚函数,因为对象还没有完全诞生,此时调用为实调用。注意在析构时,先析构派生类再析构基类,所以在函数中调用基类虚函数时,派生类已经被析构,此时不能再调用派生类的虚函数。关于虚调用的使用,更多见:  https://blog.csdn.net/u011475134/article/details/76347803
  3. 如果一个内存区域中具有不同属性的别名,当通过别名进行引用时,内存区域中的数据值要检查是否具有正确的属性。
  4. 是否计算位串的地址。
  5. 字符串的边界要注意是否存在“差一个”的错误。

二、数据声明错误

     所有的变量都需要声明类型并初始化

三、运算错误

  1. 是否存在不一致的数据类型的变量间的运算。这个错误有时候编译器归为警告类型,但仍然需要检查。
  2. 赋值语句的变量的数据类型是否小于右边表达式的数据类型与结果?
  3. 表达式运算过程中是否会出现溢出现象?所以在编程时要有取模的好习惯。
  4. 对于包含一个以上操作符的表达式,赋值顺序和操作符的优先顺序要注意。

四、比较错误

  1. 注意是否存在不同数据类型的比较。
  2. 布尔运算符的操作数是否是布尔类型的。
  3. 对于连续比较,语句是否正确。比如2<i<10的写法是不对的,应该为(i>2)&&(i<10)。
  4. 操作符的优先级是否正确,是否能被正确理解?

五、控制流程错误

  1. 是否存在死循环?
  2. 是否存在“仅差一个”的错误
  3. 对于条件控制流程,是否存在将所有的情况包含在内。

六、接口错误

  1. 注意函数实参和形参的数量、类型、顺序是否匹配。
  2. 是否有程序改变了某个原本仅为输入值的形参。如果一个函数的形参是指针,在这个函数内需要对此指针指向的内存空间操作。最好在此函数中定义一个指针,使这个指针指向要操作的内存空间。避免其他程序对形参指针操作时发生错误。
  3. 如果存在全局变量,在所有引用他们的模块中,格式是否正确。还有一个非常重要的问题,在多线程编程中,如果一个变量为共享变量,要注意对这个变量进行互斥量保护!

七、输入/输出错误

  1. 是否有足够的内存空间,来保留程序将读取的文件?
  2. 所有的文件在使用后是否正确关闭?
  3. 程序是否处理“File Not Found”的错误
  4. 对I/O出错情况处理是否正确?
  5. 常数是否以实参形式传递过?这个在C开发中是常见的,会造成什么影响?

八、其他检查

  1. 要对程序编译时发出的警告进行一一检查
  2. 程序是否有异常判断,比如输入为一个空指针、对于unsigned int的形参i,是否有i<0的检查?
  3. 注意程序中结构体的“字节对齐”的问题。
  4. 程序的注释是否言简意赅?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值