java 代码走查_代码走查如何保证软件质量
目的
代码走查的好处非常多,第一个是让新同学快速熟悉代码并了解系统。第二个是做资损防控的事前检查,在事前规避引发线上故障。第三个是通过一起讨论和审查,加强团队代码阅读和编写能力,让大家编写出优秀的代码。代码走查的优点非常多,但是最核心的还是希望通过代码走查提前发现问题并解决问题。
所以基于以上目的,代码走查不是为了找到代码写的差的程序员加以批评,不是为了找到差的代码,而是一起发现问题共同成长,所以对于写代码的同学不需要过于紧张,但是在代码走查前自己可以先看一次优化一遍,不过所有的变更必须有单元测试覆盖,否则为了优化代码又会引发新的问题。
什么场景应该做代码走查?
我认为有几个时机点是需要做代码走查的,第一个是定期,每几个月定期做一次代码走查。第二个是有重大变更时做代码走查,如代码第一次上线或增加了比较多的代码。
如何进行代码走查
代码走查的角色
主持人:负责主持整个走查活动,包括会议邀约和控制时间(一般一小时左右)进度。为了让代码走查高效,需要及时阻止不必要的讨论,比如讲解人讲的太发散、或者大家针对一个点讨论时间过长。
讲解人:负责对代码进行讲解并跟进修改计划,一般是系统Owner或代码编写者。
记录人:记录代码走查记录,记录中包括代码走查中发现的问题点、修复方法和最佳实践,问题需要指定到对应的人。
评审人:对代码进行评审发现问题并找出最佳实践,一般是资深开发和测试同学。
参与人:参加代码走查,主要以学习为主。
走查前做好充分准备
讲解人整理本次要走读的代码分支、系分设计和代码入口,然后发邮件通知大家,参加代码走查的人提前阅读系分和代码,针对看不懂的代码、有问题的代码和设计复杂的代码全部提交Review记录。
讲解人必须想好走查哪些代码,一般是主流程或有问题的点,控制整个代码走查的时间,我们第一次代码走查花了三个多小时,由于时间太长,走查的过程中开发都走了几个。
走查中控制节奏
直接讲代码很多没参与的同学会很晕,所以先大致讲下系分设计,不需要全部讲完设计再讲代码,而是讲一部分设计,再讲一部分代码。讲解人带着大家一行一行读代码,讲解代码的含义和思考,记录人负责记录Review出的问题和最佳实践。
代码走查的评判标准,主要关注几个点
编码规范: 可以使用IDEA的插件自动扫描有没有编码问题。
设计规范
幂等性
逻辑问题:是否满足需求。
一致性问题
并发和锁:在并发情况下,代码执行结果是否有问题。
性能问题:代码是否存在性能问题,预计峰值流量能到多少。
分支覆盖率:是否有分支没有覆盖
走查后总结
在代码走查之后,要优化代码走查,所以会发一个调查问卷给大家
参加代码走查有什么收获?
对代码走查有什么建议?
我们走查完之后有几个改进点
时间把控:第一次代码走查主持人和讲解人时间没控制好,走查了三个多小时,后续主讲人讲重点,主持人随时控场,讨论超过几分钟的就记录下面,线下讨论。
重点优先:大家前面精力比较好后面就分神了,后续主讲人优先走查重点代码。
java 代码走查_代码走查如何保证软件质量相关推荐
- Java之List系列--ArrayList保证线程安全的方法
原文网址:Java之List系列--ArrayList保证线程安全的方法_IT利刃出鞘的博客-CSDN博客 简介 本文介绍Java中的ArrayList.LinkedList如何进行线程安全的操作.为 ...
- java数组的下界,Java泛型_上界extends_下界super
Java泛型_上界extends_下界super ? 通配符类型 extends T> 表示类型的上界,表示参数化类型的可能是T或是T的子类 super T> 表示类型下界(Java C ...
- JAVA入门_多线程_邮局派发信件
JAVA入门_多线程_邮局派发信件 Postman package cn.campsg.java.experiment.entity;public class Postman {private Str ...
- 第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++
第一段Java程序_借助Win控制命令台编译执行 编辑器Notepad++ 准备代码: 第一次编译: 显然需要先配置环境变量: 先找到java.exe和javac.exe所在的文件夹位置: 此电脑-& ...
- java 多线程写缓存,Java多线程_缓存对齐
1.什么是缓存对齐 当前的电脑中,数据存储在磁盘上,可以断电保存,但是读取效率较低.不断电的情况下,数据可以在内存中存储,相对硬盘效率差不多是磁盘的一万倍左右.但是运算时,速度最快的是直接缓存在CPU ...
- 复习Java异常处理_异常分类_自定义异常_线程初步了解
复习Java异常处理_异常分类_自定义异常_线程 主要内容 异常.线程 教学目标 第一章 异常 1.1 异常概念 异常,就是不正常的意思.在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点 ...
- java 析构函数_《JAVA编程思想》5分钟速成:第5章(初始化和清理)
第五章.初始化和清理 前言 1.初始化顺序(静态成员.非静态成员,构造器.父类构造器)的排序: 2.构造器(constructor)是否可被重写(override)? 3.final, finally ...
- java项目_第171期ssm房屋租赁系统_计算机毕业设计
java项目_第171期ssm房屋租赁系统_计算机毕业设计 [源码请到下载专栏下载] 今天分享的项目是<ssm房屋租赁系统> 该项目分为2个角色,管理员和用户. 用户可以浏览前台,查看房屋 ...
- java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计
java项目-第155期ssm班级同学录网站-java毕业设计_计算机毕业设计 [源码请到资源专栏下载] 今天分享的项目是<ssm班级同学录网站> 该项目分为2个角色,管理员.用户. 用户 ...
- JAVA入门_继承与重载_饲养员喂养动物
JAVA入门_继承与重载_饲养员喂养动物 实验要求 Tiger类 Feeder类 MainClass 运行结果 实验要求 本实验要求:本实验以饲养员喂养老虎为业务背景,体验"函数重载&quo ...
最新文章
- osg中运用Shader(osg初级篇2)
- 用yum查询想安装的软件
- 神州数码c语言笔试题,神州数码 面试
- 算法导论 第六章 堆排序 习题6.5-8 k路合并排序
- 现在有N元钱,两块钱一瓶,或者直接给你N瓶酒,两个空瓶换一瓶酒,四个瓶盖换一瓶酒,问你最后可以喝多少瓶?如果能借酒呢?
- java 广义表_java 输入广义表 生成二叉树 | 学步园
- 01-hibernate注解:类级别注解,@Entity,@Table,@Embeddable
- python算法应用(四)——多维缩放
- UVa 10394-Twin Primes
- springMVC学习(1)
- 运维审计平台之堡垒机和跳板机
- c语言中常见的数学函数
- 让计算机网络与作文教学,“基于计算机和网络环境下的写作教学研究”课题组 2015-2016学年度上学期研究计划...
- Vue/js 富文本编辑器、excel编辑器合集
- 转载:深入研究-webkit-overflow-scrolling:touch及ios滚动
- css记录div渐变背景设置border-radius圆角显示不完整
- drawboard pdf拆分文件_干货 | 这是一份最全的PDF问题解决方案
- 植物大战僵尸2android最新版,手机植物大战僵尸2高清版下载官方-植物大战僵尸2高清版 安卓版v2.4.8-PC6手游网...
- Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
- 云计算到底是什么?我这样看待云计算
热门文章
- 手机CAD如何快速看图下载?
- Nicescroll滚动条插件的用法
- Mac版PScc破解安装方法
- 程序员100套简历模板,全网最全
- KTV用什么收银管理系统管店?
- VMware workstations pro16.23已经安装vmware tool,Ubuntu仍然无法复制粘贴
- Pygame下载教程
- GoEasy小程序即时通讯源码 v1.1.0/基于GoEasy提供的websocket通讯服务
- 电商扣减库存_外贸电商仓储:代打包代贴单一件代发全球
- jmeter教程https://max.book118.com/html/2019/0108/6145005114002000.shtm