但凡我接触过的靠谱的团队,无一不是在团队中推行严格的代码审查制度。这个就像是一种习惯,直接融入在团队血液之中。Pragmatic.ly 团队多年的代码审查实践分享
http://yedingding.com/2013/08/08/dig-into-code-review-process.html
code review 有好的工具配合可以更有效率和更容易实践,github 或 gitlab 的 PR 模式都是非常适合的,特别是他们的 UI 和 dff 的查看非常便利。
我们使用 gerrit 作为专门的 code review 工具。和楼主一样认可代码审核的效果。在实施过程中也发现一些阻力:
@Yujing_Z A 和 B 做 Code Review,会遇到问题:A 今天效率不错,B 效率差一点。A Review 完 B 的代码,自己的代码 B 没心情 Review 的情况。但项目要前进不能等人的。
你一周 7 天有 5 天可能会 code review,是做了 Review 还是没做。你如果一直坚持 review,就没有遇到问题吗?你是如何解决的。我觉得这才是讨论的价值。
非常同意@xds2000 的说法。code review 本身没什么难的,但要让团队认可 code review 这回事就很难了。这里说的团队不光指技术人员,还有老板,项目经理等。也许技术人员可以通过 code review 得到提升,但是对于很多不是技术出生得老板,经理而言能看到的直接价值几乎没有。推动 code review 认知度是个漫长的过程,得让大佬们尝到甜头。
算了,稍微详细的回复一下,当然,这只是我和我们团队用的,未必是最好的。唯一我能说的就是从没影响过项目进度
Code Review 有很多很多的实现方法,我们用的是基于 pull request 的。每一次的 pull request 就代表着需要一次 Code review。并没有规定说今天一定要结束工作前 A 和 B 都 review 掉对方的代码。一般来说不是特别复杂棘手的问题,通过在 github 的留言,5 个回合之内就能决定是 reject 还是 merge 了。如果非常的麻烦,不紧急的话,在 standing up meeting 的时候讨论掉,或者如果有多个人的项目,你就找一个人能顶的,抽个时间和你无论是近战还是远程 pair 消灭掉,然后再 pq。所以说我说 5 天有可能 cr,我真的没有弗扯。。
基本上来说 Code Review 就是开发的一部分,所以在我这,pm 从来就没有 cr 占用时间这种说法
这样异步的 cr,没有人来鸟你怎么办?这我感觉是团队氛围吧,一般我发一个 pr,总有至少 2 个人来看,然后给我留意见,我改完之后再帮我 merge 了
至于任务的优先级,或者说哪些应该先 review,急着 merge 的,一般我们都分成 Blocker, critical, major, minor, trivial 这几级吧。一个 PR 都会对应一个 story,无论是 bug 还是 feature。我们用的 pivotal/jira 来 track story/issue,同时都会有对应的优先级。PM基本上就成天画大饼写故事,然后我们挑着做。
开发过程中我们也使用 Jenkins 来 CI,保证项目环境啊测试神马的不会出错。所以在前面的 5 级只上,还有 Jenkins build fail 这一级。基本上无论什么情况,假如 Jenkins build fail 了,都要立刻修复。
扯远了。我觉得 code review 是我开发的一部分,根本不可能分割。所以我没有那些问题。
从来没有 code review 的团队如果想推广,可以把团队分为两组,一组进行 code review,一组不 review。从 bug 数量,代码的可维护性,团队成员之间的了解程度,或其他方面来进行比较,这样慢慢分组推广比较好,到底有什么好处,有参照有对比。