在 Wikipedia 上,对代码审查的定义是
代码审查(英语:Code Review)是指对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。代码审查常以不同的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查
代码审查会为我们带来什么好处
- 代码审查保证软件质量。我们的团队虽然有专门的QA人员,但测试更多的是基于黑盒测试更多的保证外在质量,无法发现隐藏在代码中的问题。比如多次线上事故都是和数据库索引,表锁,线程并发相关。这类线上故障已经变更阻碍我们团队前进的碍脚石。
- 代码审查可以促进团队的成长。通过代码审查,每个人可以学习到其他人好的思维方式和编码方式。也会提出做的不好地方的改进意见,是整个团队在代码级别的另一种沟通和思考。最近一次跨团队的代码审查我就发现AB团队使用的好多技术或插件版本都不一致,大大影响的团队整体的一致性。
- 代码审查还可以有效的避免单点故障。每一行代码,团队里至少有两人以上是了解的。万一出现线上故障,即使代码编写者不在,我们仍然有其他人能立刻去修正。
- 代码审查不仅仅限于人与人之间的,还可以是人与程序之间的,通过SouneQube来进行代码审查。团队成员可以更早的发现问题,SQ还可以持续的更新规则,让团队有机会了解最好的代码习惯应该是什么样的。
代码审查方法
程序审查
在开发阶段我们更多的是通过SQ来做自动化的代码检查,SQ的高版本已经可以发现代码中的BUG,漏洞,坏味道,智能省时。可以过滤大多代码级别的问题。
合并分支时人工审查
我们还使用了GIT的版本分支功能,每个功能点开发完毕向主分支合并时我们会由技术经理进行审核,主要审核如下几点
- 代码是否按功能进行合理的分层,比如所有第三方接口请求都在service层
- 代码中如果启用了事务是否合理
- 代码中如果启用了线程是否合理,是否需要使用线程池来维护线程
- 代码是否清晰易读
- 测试代码同样需要审查
- 是否最好的实现有重构的可能吗
审查点还有待完善的...
结对开发
这是一个比较高成本的代码审查机制,结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。两个程序员经常这样容易摩擦出火花。人们更不愿意打断两个结对的人,而单独工作的人却容易被打断。
在我们的团队中一般有新人入职时,我们会让一个有开发经验的人和新人一块进行结对开发,让新人了解团队文化以及团队的代码风格。
故障总结会
故障总结会其实也是一种代码审查,上面的的几种基本都是1对1的审查。但要想让全团队避免踩过一次的坑再踩。对线上的故障进行分享让团队所有人看其中的问题这也是一种代码复查方式。在实际团队特别是非产品性团队会更有效果。
代码审查背后引申的好处
首先,代码审查的最大的功用是纯社会性的。如果你在编程,而且知道将会有同事检查你的代码,你编程态度就完全不一样了。你写出的代码将更加整洁,有更好的注释和程序结构。