常见code review问题

一、常见cr问题

  1. 语法特征错误(不影响编译,但是运行阶段出错),如数组越界
  2. 边界行为特征错误,如a/b , b = 0
  3. 经验特征错误,如逻辑判断写成了赋值语句
  4. 部分算法错误:在特定条件或者输入情况下,算法不能准确完成业务要求实现的功能,如两个整数相加可能会出现和越界的情况

二、单元测试

  1.  单元测试用例“输入参数”的复杂性
    1. 被测试函数的输入参数
    2. 被测试函数内部需要读取的全局静态变量
    3. 被测试函数内部需要读取的类成员变量
    4. 函数内部调用子函数获得的数据
    5. 函数内部调用子函数改写的数据
    6. 嵌入式系统中,在中断调用中改写的数据:在某些中断事件发生并执行中断函数时,中断函数很可能会改写某个寄存器的值,但是被测函数的后续代码还要基于这个寄存器的值进行分支判断
  2. 单元测试预期输出:
    1. 被测函数的返回值
    2. 被测函数的输出参数
    3. 被测函数所改写的成员变量和全局变量
    4. 被测函数中进行的文件更新、数据库更新、消息队列更新等
  3. 关联依赖的代码不可用:使用桩函数,隔离不起,实现被测函数的逻辑控制

        

  1. 空值:值为null导致空指针异常,参数字符串含有前导或后缀空格没有Trim导致查询为空,建议添加空值检测,在参数入口统一做trim
  2. 未捕获的异常:调用API接口、库函数或系统服务时,一定要添加防护,做防御式编程,要么在当前方法捕获异常并返回合适的空值或空对象,要么抛给高层处理
  3. 低性能:
    1. 循环或逐个调用单个接口获取数据或访问数据库:建议提供批量接口或批量处理并发获取数据
    2. 重复创建几乎完全相同的对象:将可复用对象抽离出循环,一次创建多次使用
    3. 数据库访问、网络调用等服务未处理超时的情况:设置合理的超时时间并捕获超时异常处理
    4. 多重循环对于大数据量处理的算法性能低:使用预排序或预处理,构造合适的数据结构
    5. 大量字符串拼接是使用了String而非StringBuilder:少量字符串拼接用String,大量用StringBuilder
  4. 影响范围过大:对多个模块依赖的公共函数的修改,建议抽离出新的函数,抽离原函数的可复用部分,然后基于可复用部分构建新的函数
  5. 单测问题
  6. 与原有逻辑不兼容
  7. 缺乏必要日志:对于重要而关键的实例状态,代码路径及API调用,适当添加INFO日志,对于异常,应添加捕获和ERRO日志
  8. 错误代码不符合规范
  9. 参数检测缺乏或者不足:建议集中管理,对应用中的所有参数进行统一集中化检测
  10. 引用错误、细节错误
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值