Code Review标准

Code Reivew的目的是为了使所有代码的代码健康得到改善(代码健康是指代码的可维护性,可阅读性,稳定性及简洁性)。所有的工具,流程都是为此目的而设计的。

为了达到这一目的,我们必须权衡取舍。

首先,开发人员必须针对改善代码而有所行动,毕竟如果你从来不去改善代码,则代码基永远不会得到改善。同时,评审员如果使任何变更都很难以被批准 ,则开发者以后就不会去改善代码了。

另一方面,评审员有责任去保证每一次提交列表(CL)没有降低整个代码库的代码健康。这很棘手,因为代码库整体的健康程度的下降是由于经常性的一小部分代码质量下降积累而致的。特别是当一个团队在重大的时间限制下,他们觉得必须走捷径以实现他们的目标。

此外,评审员对他们审查的代码拥有所有权和责任。他们希望确保代码库保持一致、可维护,以及“Code Review应该Review什么”中提到的所有其他内容。

因此,我们得到了以下规则作为我们在代码审查中期望的标准:

一般来说,代码审查者应该通过那些绝对能提高代码健康的但是并不完美的提交列表(CL).

这是所有代码审查指南中的高级原则。

当然,这是有限制的。例如,如果CL添加了评审员不希望在其系统中使用的功能,那么即使代码设计良好,评审员也可以拒绝批准。

这里的一个关键点是,没有所谓的“完美”代码,只有更好的代码。评审员不应该要求作者在批准之前对CL的每一个微小部分进行打磨。相反,评审员应该权衡取得进展的需要和他们所建议的变更的重要性。评审员不应该追求完美,而应该追求持续改进。作为一个整体,提高系统的可维护性、可读性和可理解性的CL不应该因为它不是“完美的”而推迟几天或几周。

评审员总是可以自由地留下评论,表示某些东西可能会更好,但是如果它不是很重要,可以在前面加上“Nit:”这样的前缀,让作者知道这只是一种修饰,他们可以选择忽略。

注意:在本文档中,没有任何内容证明检入会明显地恶化系统的整体代码健康状况的CL是合理的。只有在“紧急情况”下你才会这么做。

指南

代码评审的一个重要功能是向开发人员传授有关语言、框架或一般软件设计原则的新知识。留下有助于开发人员学习新东西的评论总是好的。随着时间的推移,共享知识是改善系统代码健康状况的一部分。请记住,如果您的评论纯粹是教育性的,但对于满足本文档中描述的标准不是至关重要的,请在前面加上“Nit:”或以其他方式表明作者不必在本CL中解决它。

  • 技术事实和数据压倒了意见和个人偏好。
  • 在风格方面,风格指南是绝对权威。任何没有在样式指南中的纯样式点(空格等)都是个人偏好的问题。风格应该与现有的一致。如果没有以前的风格,那就接受作者的风格。
  • 软件设计的各个方面几乎从来都不是纯粹的风格问题或个人偏好。它们是建立在基本原则基础上的,应该以这些原则为依据,而不是简单地以个人观点为依据。 有时有一些有效的选项。如果作者能够证明(通过数据或基于可靠的工程原理)几种方法是同样有效的,那么评审员应该接受作者的偏好。否则,选择取决于软件设计的标准原则。
  • 如果没有其他规则适用,那么评审员可以要求作者与当前代码库中的内容保持一致,只要这不会恶化系统的整体代码健康状况。

解决分歧

在代码评审的任何分歧中,第一步总是让开发人员和评审员根据本文档的内容和CL作者指南评审员指南中的其他文档达成一致。

当达成一致意见变得特别困难时,通过评审员和作者之间进行一次面对面的会议或视频会议来解决分歧,而不是试图通过Code Review的评论来解决。(如果您这样做了,请确保将讨论的结果记录在CL的评论中,以供将来的读者参考。)

如果这还不能解决问题,最常见的解决方法就是升级。通常情况下,升级的途径是更广泛的团队讨论,让TL参与进来,请求代码维护者做出决定,或者请求经理提供帮助。不要因为作者和评审员不能达成一致意见而让CL悬而未决。

下一章:Code Review应该Review什么

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342