目的

代码走查的好处非常多,第一个是让新同学快速熟悉代码并了解系统。第二个是做资损防控的事前检查,在事前规避引发线上故障。第三个是通过一起讨论和审查,加强团队代码阅读和编写能力,让大家编写出优秀的代码。代码走查的优点非常多,但是最核心的还是希望通过代码走查提前发现问题并解决问题。

所以基于以上目的,代码走查不是为了找到代码写的差的程序员加以批评,不是为了找到差的代码,而是一起发现问题共同成长,所以对于写代码的同学不需要过于紧张,但是在代码走查前自己可以先看一次优化一遍,不过所有的变更必须有单元测试覆盖,否则为了优化代码又会引发新的问题。

什么场景应该做代码走查?

我认为有几个时机点是需要做代码走查的,第一个是定期,每几个月定期做一次代码走查。第二个是有重大变更时做代码走查,如代码第一次上线或增加了比较多的代码。

如何进行代码走查

代码走查的角色

主持人:负责主持整个走查活动,包括会议邀约和控制时间(一般一小时左右)进度。为了让代码走查高效,需要及时阻止不必要的讨论,比如讲解人讲的太发散、或者大家针对一个点讨论时间过长。

讲解人:负责对代码进行讲解并跟进修改计划,一般是系统Owner或代码编写者。

记录人:记录代码走查记录,记录中包括代码走查中发现的问题点、修复方法和最佳实践,问题需要指定到对应的人。

评审人:对代码进行评审发现问题并找出最佳实践,一般是资深开发和测试同学。

参与人:参加代码走查,主要以学习为主。

走查前做好充分准备

讲解人整理本次要走读的代码分支、系分设计和代码入口,然后发邮件通知大家,参加代码走查的人提前阅读系分和代码,针对看不懂的代码、有问题的代码和设计复杂的代码全部提交Review记录。

讲解人必须想好走查哪些代码,一般是主流程或有问题的点,控制整个代码走查的时间,我们第一次代码走查花了三个多小时,由于时间太长,走查的过程中开发都走了几个。

走查中控制节奏

直接讲代码很多没参与的同学会很晕,所以先大致讲下系分设计,不需要全部讲完设计再讲代码,而是讲一部分设计,再讲一部分代码。讲解人带着大家一行一行读代码,讲解代码的含义和思考,记录人负责记录Review出的问题和最佳实践。

代码走查的评判标准,主要关注几个点

编码规范: 可以使用IDEA的插件自动扫描有没有编码问题。

设计规范

幂等性

逻辑问题:是否满足需求。

一致性问题

并发和锁:在并发情况下,代码执行结果是否有问题。

性能问题:代码是否存在性能问题,预计峰值流量能到多少。

分支覆盖率:是否有分支没有覆盖

走查后总结

在代码走查之后,要优化代码走查,所以会发一个调查问卷给大家

参加代码走查有什么收获?

对代码走查有什么建议?

我们走查完之后有几个改进点

时间把控:第一次代码走查主持人和讲解人时间没控制好,走查了三个多小时,后续主讲人讲重点,主持人随时控场,讨论超过几分钟的就记录下面,线下讨论。

重点优先:大家前面精力比较好后面就分神了,后续主讲人优先走查重点代码。

java 代码走查_代码走查如何保证软件质量相关推荐

  1. Java之List系列--ArrayList保证线程安全的方法

    原文网址:Java之List系列--ArrayList保证线程安全的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java中的ArrayList.LinkedList如何进行线程安全的操作.为 ...

  2. java数组的下界,Java泛型_上界extends_下界super

    Java泛型_上界extends_下界super ? 通配符类型 extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类 super T> 表示类型下界(Java C ...

  3. JAVA入门_多线程_邮局派发信件

    JAVA入门_多线程_邮局派发信件 Postman package cn.campsg.java.experiment.entity;public class Postman {private Str ...

  4. 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++

    第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...

  5. java 多线程写缓存,Java多线程_缓存对齐

    1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...

  6. 复习Java异常处理_异常分类_自定义异常_线程初步了解

    复习Java异常处理_异常分类_自定义异常_线程 主要内容 异常.线程 教学目标 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点 ...

  7. java 析构函数_《JAVA编程思想》5分钟速成:第5章(初始化和清理)

    第五章.初始化和清理 前言 1.初始化顺序(静态成员.非静态成员,构造器.父类构造器)的排序: 2.构造器(constructor)是否可被重写(override)? 3.final, finally ...

  8. java项目_第171期ssm房屋租赁系统_计算机毕业设计

    java项目_第171期ssm房屋租赁系统_计算机毕业设计 [源码请到下载专栏下载] 今天分享的项目是<ssm房屋租赁系统> 该项目分为2个角色,管理员和用户. 用户可以浏览前台,查看房屋 ...

  9. java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计

    java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计 [源码请到资源专栏下载] 今天分享的项目是<ssm班级同学录网站> 该项目分为2个角色,管理员.用户. 用户 ...

  10. JAVA入门_继承与重载_饲养员喂养动物

    JAVA入门_继承与重载_饲养员喂养动物 实验要求 Tiger类 Feeder类 MainClass 运行结果 实验要求 本实验要求:本实验以饲养员喂养老虎为业务背景,体验"函数重载&quo ...

最新文章

  1. osg中运用Shader(osg初级篇2)
  2. 用yum查询想安装的软件
  3. 神州数码c语言笔试题,神州数码 面试
  4. 算法导论 第六章 堆排序 习题6.5-8 k路合并排序
  5. 现在有N元钱,两块钱一瓶,或者直接给你N瓶酒,两个空瓶换一瓶酒,四个瓶盖换一瓶酒,问你最后可以喝多少瓶?如果能借酒呢?
  6. java 广义表_java 输入广义表 生成二叉树 | 学步园
  7. 01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable
  8. python算法应用(四)——多维缩放
  9. UVa 10394-Twin Primes
  10. springMVC学习(1)
  11. 运维审计平台之堡垒机和跳板机
  12. c语言中常见的数学函数
  13. 让计算机网络与作文教学,“基于计算机和网络环境下的写作教学研究”课题组  2015-2016学年度上学期研究计划...
  14. Vue/js 富文本编辑器、excel编辑器合集
  15. 转载:深入研究-webkit-overflow-scrolling:touch及ios滚动
  16. css记录div渐变背景设置border-radius圆角显示不完整
  17. drawboard pdf拆分文件_干货 | 这是一份最全的PDF问题解决方案
  18. 植物大战僵尸2android最新版,手机植物大战僵尸2高清版下载官方-植物大战僵尸2高清版 安卓版v2.4.8-PC6手游网...
  19. Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
  20. 云计算到底是什么?我这样看待云计算

热门文章

  1. 手机CAD如何快速看图下载?
  2. Nicescroll滚动条插件的用法
  3. Mac版PScc破解安装方法
  4. 程序员100套简历模板,全网最全
  5. KTV用什么收银管理系统管店?
  6. VMware workstations pro16.23已经安装vmware tool,Ubuntu仍然无法复制粘贴
  7. Pygame下载教程
  8. GoEasy小程序即时通讯源码 v1.1.0/基于GoEasy提供的websocket通讯服务
  9. 电商扣减库存_外贸电商仓储:代打包代贴单一件代发全球
  10. jmeter教程https://max.book118.com/html/2019/0108/6145005114002000.shtm