C++工程代码自查list
// 是实打实的踩坑经验
本着早发现早治疗的原则,写个list, 每次大的更新前尽量先离线自查一下。 经验有限,踩坑后再更新
下标
下标最容易出现越界的问题
- 检查所有用到显式数字索引的地方,是否明确任何情况下这些索引都是有值的
- 检查所有vector部分,是否有对某个位置的单独索引,能不能保证在size内
- 全局检查所有用到at的部分,取不到肯定会异常的,是否提前做了find处理
- 检查map中用中括号索引的部分,是否是期待这里在没有key的时候创建新key
返回值和参数
- 返回值的类型是否正确,比如unsigned还是signed
- 对异常返回值是否做了处理,比如因为出错返回了-1,检查这种情况会不会影响到后面的逻辑
- 传入的参数有没有可能是空值,空值的话会不会影响后面的函数逻辑
- 返回值有没有可能是null,要不要有默认值
- 希望的是传值还是传引用,传入的参数在函数返回后还要不要使用;标量传入之后如果不需要更改要不要加const
指针
- 用指针->调用之前,都要保证不是空指针
- 返回值是指针,且后面要用到(比如创建client)要做空指针检查
类型转换
- 所有类型转换的地方检查有没有可能异常,尤其字符串要检查会不会字符串本身为空,转int的值会不会出现浮点数或者字母
key-value - 其实主要踩过的坑是看有没有去重的必要,是直接push_back还是要去掉重复情况
时间处理
- 用到时间戳和时区的地方离线自查一下,特别是时区是否符合要求https://tool.chinaz.com/tools/unixtime.aspx
本地测试
- 批处理测试
- 异常情况测试报错信息
- 空值测试
- 重复id测试
- 。。。