关于Code Review的一些思考总结

Code Review

目的

  • 提高代码质量

  • 提前发现bug

  • 统一代码规范

  • 提高团队成员代码技能

前期找问题(代码规范、潜在缺陷、BUG,代码设计等等),后期演变成开发者技术交流和员工成长

如何开展

  • 代码规范:明确Coding规则

  • 检视清单:结合业务特点,check重点

  • 总结优化:透明问题,持续优化

  • 激励措施:激发主观能动性

开展方式

  • 强制&非强制

  • 线上交流(小组review)&线下会议(团队review)

  • 小片段&大模块

  • 发布前&发布后

  • 高频率&低频率

阻力因素

  • 领导或者团队骨干不认同

  • 为了疲于应付

  • 需求多,没时间做为偷懒借口

组织类型

  1. 小组内review,通常是模块负责人或者项目负责人review,频率比较高,一天至少一次

  2. 团队review,通常是整个团队review代码,团队负责人牵头,频率可以低一点,鉴于公司情况一周至少1次吧

review内容

统一团队代码风格和编程规范

静态代码检查工具

  1. Java类:Checkstyle、FindBugs、PMD、Infer等

  2. JavaScript类:JSLint、ESLint等

  3. Object-C类:OCLint、Clang Static Analyzer、Infer等

  4. C#类:StyleCode等

……

更多可以参考的一些编码规范(Kristories/awesome-guidelines)

发现『bad smell』的代码以及bug

相关书籍:《重构-改善既有代码的设计》《代码整洁之道》

团队成员好的经验

  • 什么写法可能导致性能低下?

  • 哪个接口要慎用?

  • 哪些设计方式需要规避?

  • 什么习惯容易引发内存泄漏?

……

开发者由于当初时间紧迫而觉得设计不合理的功能

  • 功能不完善

  • 设计有欠缺

  • 代码有更好实现方案

  • 重视项目代码的可读性

总之,代码是否符合团队约定的代码风格规范、代码是否切合它所实现的业务、代码是否安全、代码性能、对后续开发者是否友好,即是否容易维护等

注意事项

  • GitLab可以设置master和develop分支保护,开发者不能向这两个分支push代码,只能通过PR/MR形式。

  • 可以通过设置git pre-commit hook来check,从而使不符合规范的代码禁止提交仓库。

  • 配合CI检查,作为build的第一步。

  • 用户角色有:所有者/主程/开发者/报告者/访客,其中只有所有者和主程才有review代码和合并代码权限。

  • 注意小组至少有两个人有权限review并合并代码,避免一个人请假或者不在,导致代码合不上去。

  • 主程一定要注意,避免过多模块工作堆积在自己身上,一定要学会合理分配任务,因为你还需要有精力去review代码,这也是一部分额外任务。

  • 提交的 feature 分支全部走 gitlab 的 MR ,develop分支不允许提交,只用来合并,并且只合并那些经过review过的代码,master分支不允许提交,也只用来合并,并且只合并来自develop分支的代码。

  • 不一定职称越高,就更有可能比别人review代码,code review知识共享更受重视,通过review发现bug是有的,但不是最终目的,增进团队共识,保护团队一致性其实更重要。

  • 尽量避免开发经验不足的开发者或者刚进公司对业务不熟悉的人员(哪怕高级工程师)review 代码。

  • 如果可以尽可能写单元测试,不一定cover全面,如果时间紧迫可以只对关键模块做。

  • 提交PR/MR,记得在IM上通知相关人员review,比如项目负责人或者模块负责人。

  • 控制团队review的时间,半个小时到1个小时,最好不要超过1个小时,30-40分钟为宜,项目负责人具体把握。

  • 根据公司情况团队review一周在至少一次比较合适。

  • review可能需要多次才被允许合入代码,这也就意味着,可能你的代码需要给多次修改才能改好。

  • 避免代码堆积,造成一次review大量代码,一方面急于review,这样容易放水,同时也浪费时间,造成效果不理想。

  • 建议由1人做好记录,把每次review的改进点以清单形式汇总列清楚发给所有参会人员。

总结

由于工期紧、需求变更快,如果不想清楚为什么要做 Code Review ,遇到障碍会非常容易妥协,慢慢 Code Review 就会走样,最终流于形式。反之,在我们遇到障碍,review 代码不顺利时就会以积极的心态来解决问题。Code Review会影响开发效率,事实上追求高质量的代码本身就降低了局部的开发效率,但是放眼长远,这样写出来的代码更加健壮,不会或很少出现“诡异”的bug,降低了后期维护的成本。

所以Code Review本身没有问题,其实是人容易出问题。

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

推荐阅读更多精彩内容

  • 转自原文地址 前几天看了《Code Review 程序员的寄望与哀伤》,想到我们团队开展Code Review也有...
    bruce_wu阅读 2,171评论 1 13
  • Git 规范 所有使用了本规范的项目,必须严格规范操作,否则不予以合并代码、提测、打包上线等后续操作。 基本要求 ...
    zgsddzwj阅读 13,569评论 1 14
  • code review 的目的是提高代码质量,减少开发bug,俗话说,三人行必有我师,众人拾柴火焰高。 gitla...
    刘凯_7013阅读 44,506评论 4 26
  • 一点点回忆 一丝丝情意 还不曾好好拥抱你 便已你我相离 就让我从今天开始 轰轰烈烈地爱你一次 不要在意时间割走的过...
    杨寒火子阅读 306评论 1 1
  • 文/樊晓鑫 故乡 之所以称为故乡 是因为那是我们的出身地 那曾经美好的童年和少年 大多数是在那片土地上度过的 故乡...
    梵鑫阅读 257评论 0 2