为什么我再次捡起Code Review

为什么我再次捡起Code Review

关于Code Review的相关博客以及论文,在互联网中已经汗牛充栋。我还是要多次一举阐述一下这个知识观点,从不同纬度总结Code Review的重要性。

前言

这片文章将以个人视角和组织视角介绍Code Review存在的问题,并通过实战举几个栗子来说明它的实际意义。在这之外结合个人经验,提出几种比较合理重要的建议。希望可以给学习者或公司此事情的牵头人一些参考和准则。

为什么要做Code Review ?

代码审计(CR),本质上帮助开发者完成工作之后,有专员帮助开发者进行代码的复查,找出是否存在一下问题:

  1. 代码中是否有结构错误(逻辑错误、算法错误、死代码等)
  2. 环境的合规性是否正常
  3. 功能面是否有达到原来的目标,(在Reviwer时间允许的情况,建议亲自测试或让开发者演示)
  4. 代码因前期设计不周,是否过于复杂
  5. Reviwer常常只看到的Diff部分代码,更需要连接上下文进行审查
  6. Code Review过程也要鼓励程序员们相互学习对方的长处和优点

除此以上之外的,还有更多问题,需要根据公司业务或Reviwer时间进行不同的审查和测试等工作。另外,代码审计是没有偏见的,不论团队成员技术能力有多厉害,也是需要进行代码审计,就算代码完美无缺,审查后也提供了指导和学习的机会。

为什么曾经抛弃Code Review ?

  1. 开发周期过短,开发者不乐意做这些事情
  2. 审查代码成为一种形式,认为测试没问题,认为无关大雅
  3. 业务需求频繁更换,Reviewer与开发者沟通困难(开发者没过多时间吸取或沟通有问题)
  4. 从时间角度认为Code Review的作用是是为了管制他们的代码,而反向表明没有时间哪有精力写优质代码

这抛弃这个Code Review的过程,我的角色属于一个搬砖者,我也是开发者一员,上述问题基本属于当时的想法,老实说,在一个新事物开始推动的时候,如果没有足够的动力和冲动感,从自然规律上来观察,推动的过程大部分都会以半途而废结尾(没有多久就丢弃了Code Review)。

OK,角色切换,现在作为一个管理者,再次重归之前问题视角,所有人拒绝Code Review的原因并非是Code Review的问题,而是在进行Code Review的过程中,根本原因是所有人还没有体会到Code Review带给每个角色什么效益,就已经松弛下去了。

为什么重捡Code Review ?

相隔时日后,我需要Code Review并加以推动和应用,原因很简单,Code Review的好处就是目前团队需要解决的问题,我需要正视它带来的好处,比如:

  1. 代码过于死板、Bug过多、可读性差
  2. 代码性能低效
  3. 代码过于复杂,开发协作差

以上问题等等,也许没有特别糟糕,但需要提前做好预防针,解决后期更多业务和产品带来的影响。否则在持续的业务改变,带- 来的必定是恶性循环。

对于前车之鉴,这次其他层面,需要解决下列问题:

  1. 心态(培养这种思维方式,得到更多人的支持和反馈)
  2. 团队(公正在审查过程中无偏见等)
  3. 结论(对结果进行简单化,毕竟所有找到问题没有实质性产生过多生产影响)
  4. 流程(虽然审查流程是独立的,但尽可能和开发周期进行绑定在一起)

Code Review几点建议

  • 每次审查代码行书尽可能不要过多,大约500行可以
  • 总结审查过程中出现的所有问题,进行统计归总
  • 设定审查目标:
    1. 检验率:审查的速度
    2. 缺陷率:每小时检查一次发现的错误数量
    3. 缺陷密度:每行代码发现的平均错误数
  • 尊重审查范围,可以查阅上下文,但不要在上下文中找问题

推荐工具

在审查过程中,工具更有效率地来进行代码审查工作。下面是我在使用中,尝试使用的一些工具.以及一些使用上的评价与总结.

  • Phabricator
    功能很强大,除了codereview之外,还有task、bug、wiki管理,项目管理等功能,而且还有自定义的功能,界面也很清爽。

  • CodeStriker
    CodeStriker免费和开源的web应用程序,可以帮助开发人员基于web的代码审查。开发者canensures问题,评论和决策是记录在一个数据库,并提供一个舒适的工作空间实际执行代码检查。

  • Review Board
    Review board 是更好的代码复查工具程序员节省时间,金钱和理智。你的代码是syntax-highlighted,更快的阅读。我们将向您展示功能一行,替换文本内改变了什么,等等。

  • Sonar
    SonarQube®是一种自动代码审查工具,可检测代码中的错误,漏洞和代码味道。它可以与您现有的工作流程集成,以实现跨项目分支和请求请求的连续代码检查。

# 审计 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×