Code Review

Code Review

At Google, essentially every change is reviewed before being committed, and every engineer is responsible for initiating reviews and reviewing changes.

在谷歌,基本上,每一项变更在提交之前都要经过审查,每一位工程师都要负责发起和审查变更。

Google 中 80% 的代码审查确实要求开发人员采取行动。这清楚表明代码审查对代码库有积极影响。但是那剩余的 20% 呢?

Code Review 的好处

  • Checks code correctness (确认代码的正确性,高效的发现BUG)

  • Ensures the code change is comprehensible to other engineers (确保其他工程师能够理解代码更改)

  • Enforces consistency across the codebase (加强整个代码库的一致性,降低长期维护成本)

  • Psychologically promotes team ownership(从心理上促进团队所有权)

  • Enables knowledge sharing (实现知识共享)

  • Provides a historical record of the code review itself (提供代码评审本身的历史记录)

Code Review Flow (Google代码评审流程)

1、撰写变更快照 ( patch + description)

2、自审查(Critique);静态分析(Tricorder);发送变更给一个或多个评审者;

3、评审者对变更提供反馈

4、作者根据评审的结果进行修改或回复(然后再进入步骤3)

5、评审者同意变更(LGTM)

6、作者提交变更到代码仓库

Code Is a Liability(代码是一种责任)

Much like the fuel that an airplane carries, it has weight, though it is, of course, necessary for that airplane to fly.

是要记住(并接受)代码本身就是一种责任

代码审查不是重新讨论或辩论的机会

Google 如何开展 Code Review

Code Review 的实践

  • Be Polite and Professional (礼貌并且专业)
  • Write Small Changes ( 的变更 )
  • Write Good Change Descriptions (撰写 的变更描述)
  • Keep Reviewers to a Minimum (小团队Review)
  • Automate Where Possible (尽可能自动化)

Code Review 的类型

  • Greenfield reviews and new feature development
  • Behavioral changes, improvements, and optimizations
  • Bug fixes and rollbacks
  • Refactorings and large-scale changes

总结

代码审查是谷歌最重要、最关键的流程之一。从测试到静态分析再到CI,几乎所有其他流程都依赖于此。

经验 & 分享

Code Review 的维度

  • 清晰程度

    • 代码风格(通过自动化工具)
    • 可读性高、易于理解和维护
  • 准确性

    • 逻辑正确
    • 新增功能、解决问题的同时不会引入其他问题
  • 性能

    • 没有潜在的性能问题
  • 重复性

    • 在当前的文件中,是否会出现多行代码在不同的地方出现。或者,当前代码在其他文件中出现。如果是,则意味着这需要重构
    • 当前的功能是否在之前的代码中已经实现过了
  • 兼容性

    • 尽可能向前兼容(不任意删减变更现有的接口、结构体等)
  • 外部依赖

    • 确认是否必要。引入新的外部依赖,需要考虑潜在的功能安全
    • 必须引入,使用尽可能轻量级的外部包
  • 异常/边界处理

    • 是否考虑到了所有异常和边界的情况
    • 异常或边界的处理是否合理
  • 其他 ...

关于提交履历:

[type]: [subject]
例如:
[fix]: fix build issues

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

推荐阅读更多精彩内容