代码review
对于代码review个人也有些小小的看法:
1.首先我觉得我们所有开发人员要弄明白 现在Code Review 的目的 ,凡事不弄明白目的,无法做好完成一件事情,个人觉得有以下一些目的:
a)可以在项目早期就能够发现代码中的BUG ,提测后可以尽快的释放开发资源;
b)同时可以达到知识共享 ,避免我们所有开发人员犯一些很常见,很普通低级的错误 ;
c)保证项目组人员的良好沟通 ,项目的代码更容易维护
大家还有希望补充上
2.Code Review 很容易变得没有意义或是流于形式,进入 Code Review 个人觉得以下几点肯定得弄明确:
a) 我们是否理解了 Code Review 的概念和 Code Review 将做什么,这点都不明白,做法可能就会是应付了事。
b) 我们的代码是否已经正确的 build , build 的目的使得代码已经不存在基本语法错误 ,我们总不希望review人员浪费在检查连编译都通不过的代码上吧。
c) 我们 Review 人员是否理解了代码 ,做复查的人员需要对该代码有一个基本的了解,其本功能是什么,具体的业务是怎样的,这样才能采取针对性的检查
3 .具体检查点
1 完整性检查
代码是否完全实现了设计文档中提出的功能需求
代码中是否存在任何没有定义或没有引用到的变量、常数或数据类型
2一致性检查
代码的逻辑是否符合设计文档
代码中使用的格式、符号、结构等风格是否保持一致
3正确性检查
代码是否符合制定的标准
所有的变量都被正确定义和使用
所有的注释都是准确的
4 可修改性检查
代码涉及到的常量是否易于修改 ( 如使用配置、定义为类常量、使用专门的常量类等 )
5可预测性检查
代码是否具有定义良好的语法和语义
代码是否无意中陷入了死循环
代码是否是否避免了无穷递归
6健壮性检查
代码是否采取措施避免运行时错误(什么空指针异常等,有很多是程序里面处理了,但打印日志时没有判断,不知道大家有没有犯过这样的错误哟)
7可理解性检查
注释是否足够清晰的描述每个子程序 ,对于没用的代码注释是否删除
是否使用到不明确或不必要的复杂代码,它们是否被清楚的注释
使用一些统一的格式化技巧(如缩进、空白等)用来增强代码的清晰度
是否在定义命名规则时采用了便于记忆,反映类型等方法
循环嵌套是否太长太深?
8可验证性检查
代码中的实现技术是否便于测试
具体的杨帅同学也整理的很多很多,希望我们讨论会上所有人员能达成一个共识,慢慢去完善!
最后抛出一个问题,希望大家抛砖
Review中,我们发现开发人员代码的一些非逻辑问题(辟如:不符合面象接口编程的思想等,只是个举例,嘿嘿),不修改也行,因为逻辑是OK的,如果修改的话可能又要花上一些时间,此时项目的进度方面将无法保证,该如何去做?
代码review的更多相关文章
- 部署代码review和CI
公司原先搭了一个代码Review的服务器,由于历史原因,装的是一个32bit的Ubuntu系统,后来由于需要,需要安装gitlab,由于gitlab需要64位系统,所以临时凑合了个vagrant,本质 ...
- 前端代码质量保障之代码review
经验丰富的程序员和一般程序员之间的最大区别,不仅体现在解决问题的能力上, 还体现在日常代码的风格上.掌握一门技术可能需要几月,甚至几周就够了. 好的习惯风格养成却需数年. 团队成员之间需要合作,代码需 ...
- 由学习《软件设计重构》所想到的代码review(一)
前言 对于一个程序猿来讲怎样来最直接的来衡量他的技术能力和产出呢?我想最直观的作法是看他的代码编写能力,就拿我常常接触的一些程序猿来看,他们买了非常多技术重构类书籍.可是看完后代码编写能力并没有显著提 ...
- 对于近阶段公司代码 review 小结
来新公司,给公司的SDK review了一下.发现了不少小问题,在此总结一下. (我下面说明问题可能是很简单,但是搞清楚某些问题还是花了些时间的,大家引以为戒吧) 先谈谈处理的问题: 1.某天QA说有 ...
- 代码review的流程
以前我们一直都是如果要进行代码review的时候,要不我们就直接用idea来进行查看,根据不同的来查看 但是我们都是看代码的不同来进行来实现的,其实我们不需要这样,我们可以使用工具Phabricato ...
- 研发团队如何借助Gitlab来做代码review
代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现有工具在团队内部形成代码revie ...
- Gitlab来做代码review
Gitlab来做代码review 代码review是代码质量保障的手段之一,同时开发成员之间代码review也是一种技术交流的方式,虽然会占用一些时间,但对团队而言,总体是个利大于弊的事情.如何借助现 ...
- Gerrit代码Review实战
代码审核(Code Review)是软件研发质量保障机制中非常重要的一环,但在实际项目执行过程中,却因为种种原因被Delay甚至是忽略.在实践中,给大家推荐一款免费.开放源代码的代码审查软件Gerri ...
- 敏捷开发:代码Review
热情高涨 代码走查作为一种流程形式,起初大家的参与热情非常高涨. 因为,自己可以学习到别人一些巧妙的思想,自己的代码和习惯都暴漏出来. 这个过程中不断地吸收和改正. 但是...... 我们一开始组织的 ...
随机推荐
- distutils 打包setup.py
from distutils.core import setup setup(name='hello', version='1.0', description='test example', auth ...
- python 基础之第三天
例子1:8位数的随机密码 #!/usr/bin/python # coding:utf-8 import string import random pwd = '' for i in range(8) ...
- alsa音频驱动框架
sound/core/sound.c 实现了最顶层的file_operations,它起中转作用 sound/core/control.c 实现了控制接口的file_operations sound/ ...
- 微信小程序基础组件
所有的组件与属性都是小写,以连字符 - 连接 共同的属性类型: class id style bind*/catch* hidden data-* block标签. <block> 并不是 ...
- java读取文件:二进制文件
FileWriter只能接受字符串形式的参数,也就是说只能把内容存到文本文件.相对于文本文件,采用二进制格式的文件存储更省空间 InputStream用于按字节从输入流读取数据.其中的int read ...
- c++中ctype常用函数总结(isprint isblank..)
1 判断是否是二十六得字母中其中之一 isalpha(); #include <stdio.h> #include <ctype.h> #include <iostrea ...
- 51nod1212【最小生成树kruskal算法】
思路: 利用破圈法. #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=1e3 ...
- ES6之Promise对象学习——8个例子学会Promise
目录 Promise 立即执行 Promise 三种状态 Promise 不可逆性 链式调用 Promise.then()回调异步性 Promise中的异常 Promise.resolve() res ...
- DataGridView DataSource 如何实现排序
将数据绑定在下面的类中就可以实现排序 public class SortableBindingList<T> : BindingList<T> { private ArrayL ...
- 题解 P1162 【填涂颜色】
看到题目规模是n(1≤n≤30)即最大规模为30*30 本蒟蒻有个奇妙的想法!! 核心思路:搜索地图内除开被1包围着的0,并标注为1(即不填色) !!!那么,我们可以从每一个边界点开始去搜索 话不多说 ...