怎样才是满怀仁爱地工作呢?那就是满怀热情地建造;满怀温情地播种耕耘;仿佛你所爱的人要来。那就是把你心灵的气息灌输到你所制作的一切之中去。雕刻大理石,在石头里寻找自己的灵魂。(纪伯伦)

在现实中积聚新活力是一件伟大的事情。(Vincent van Gogh)

引子


KISSkeep it simple, stupid),意思是“保持简单和笨拙”(UNIX 哲学); Do one thing and do it well.

Doug McIlroy(UNIX 管道的发明人、UNIX 传统的奠基人之一) 认为 UNIX 的哲学是这样的:

  • Write programs that do one thing and do it well.

一次只做一件事,并能把这件事做好。

  • Write programs to work together.

互相协作(调用)。

  • Write programs to handle text streams, because that is a universal interface.

写处理文件流的程序。因为这(处理文件流)是一个通用接口。

Talk is cheap,show me the code.

Code Review 是一种开发文化,而不仅仅是一种制度.

把Code Review 作为开发流程的必选项后,不代表Code Review这件事就可以执行的很好,因为Code Review 的执行,很大部分程度上依赖于审查者的认真审查,以及被审查者的积极配合,两者缺一不可!

如果仅仅只是当作一个流程制度,那么就可能会流于形式。最终结果就是看起来有Code Review,但没有人认真审查,随便看下就通过了,或者发现问题也不愿意修改。

真要把Code Review这件事做好,必须让Code Review变成团队的一种文化,开发人员从心底接受这件事,并认真执行这件事。

要形成这样的文化,不那么容易,也没有想象的那么难,比如这些方面可以参考:

  • 首先,得让开发人员认识到Code Review这件事为他人、为团队、为个人都能带来的好处

  • 然后,得要有几个人做好表率作用,榜样的力量很重要

  • 还有,对于管理者来说,你激励什么,往往就会得到什么

  • 最后,像写自动化测试一样,把Code Review要作为开发任务的一部分,给审查者和被审查者都留出专门的时间去做这件事,不能光想着马儿跑得快又舍不得给马儿吃草

如何形成这样的文化,有心的话,还有很多方法可以尝试。只有真正让大家都认同和践行,才可能去做好Code Review这件事。

知行合一

提升认知,端正态度,向内探求.

要为自己的代码而自豪,但是不要觉得自己的代码是完美的.只有不断地去完善,不断地寻找问题,发现问题,然后解决问题---臻于至善.

磨练灵魂,提升心志

磨练灵魂,提升心志,这就是我为什么要工作(Coding)。工作(Coding)是人生最珍贵最重要最有价值的行为,生命中的困难和挫折正是我人生的起点,也正是我最大的幸运。(稻盛和夫)

痛苦的根源往往在于欲望超过了能力。因而韬盛和夫认为,佛所说欲望、恼怒、愚痴这“三毒”最好的解药便是在工作中“精进”。

令稻盛和夫动容的一个回忆是听木匠讲:

“树木里宿着生命,工作时必须倾听这生命发出的呼声 ——在使用千年树龄的木料时 ,我们工作的精湛必须经得起千年日月的考验 。”

大音若此,工作之中有神明。

无论我们在做什么,手中的工作即是塑造自我的法门,无他。

参考:https://blog.csdn.net/universsky2015/article/details/83593437

Happy Coding

写代码时,要使自己专注,认真,进入心流状态,然后,做到快乐 Coding.

CR目的

  1. 发现代码缺陷,提高代码质量,

  1. 统一团队代码规范

  1. 保证设计合理性

  1. 促进工程师日常代码交流和人员的成长

CR时机: 提测之前

开发并自测结束之后,提测之前,可与联调并行

Bad Code ?

在 Code Review 时, 需要有对 bad code 进行简单判断的能力

除了要了解一流代码的特性之外,在 Code Review 时,需要有对 bad code 进行简单判断的能力。通常 bad code 有以下特点:

①5 分钟内不能看懂的代码。

不能快速看懂的代码,一定是有问题的代码,可以先抛回给编写代码人员进行修正。一般一个函数的操作不能超过 6 个 step,如果超过这个数量,则需要重新调整编码逻辑。

②需要思考才能看懂的代码。

好的代码阅读时基本不用动脑子,甚至看注释就能看懂。

③需要来回翻屏才能看懂的代码。

好的代码,经常在一屏内就是一个完整的逻辑。

④没有空行或注释的代码。

Good Code? 一流代码

一流代码有以下特性:

①高效性;

鲁棒性

③简洁;

④简短;

⑤可共享;

⑥可测试;

⑦可移植;

⑧可监控;

⑨可运维;

⑩可扩展。

将以上十条标准进行总结精简,可归纳为:

①代码的正确和性能;

②代码的可读和可维护性;

③代码的可运维和可运行;

④代码的可共享和可重用;

在 Code Review 时,综合考虑以上一流代码的特性,可以快速提升代码质量、提升编写代码的能力等。

为什要CodeReview?

提高代码质量

①提高代码质量可以提高代码的可读性。

②提高代码质量可以提高代码的复用性和参考性。

③提高代码质量可以减少 bug 出现的风险。

④提高代码质量可以减少后期补丁的风险。

⑤提高代码质量可以降低代码失控的风险。

⑥提高代码质量可以降低项目重构和升级的麻烦。

提高写代码的能力

①代码能力如果停滞不前,对于个人而言,将导致职业危机。

②代码能力如果停滞不前,对于团队而言,将意味着团队没有成长。

Code Review 是一个非常重要的提升代码质量和代码能力的手段。无论是从个人发展角度,还是团队发展角度,我们都需要重视 Code Review。

Code Review 是提升代码质量的最好方法

强化 Code Review 是提升代码质量的第一选择。

在代码开发过程中,我们越早发现问题、定位问题,在修复问题时付出的成本越小。

大约有 50%以上的 bug,都是在做 Code Review 时发现的。前期做好 Code Review,后期将会减少反复修改等不必要的复工。

Code Review 能够在团队内传递知识

从知识传递的角度看,Code Review 是极为重要的。

做好 Code Review,能够帮助团队传递知识、沟通交流、互相学习,能够提升学习能力、提升编写代码能力、提升代码质量、提升工作效率、降低项目风险。

另外,基于 codebase 可以使我们了解项目全局,培养系统的思考方式。

Code Review 是辅导怎么写代码的最好方法

我们要意识到,做 Code Review 可以学习到别人的经验,同时也可以向别人传递我们的经验。

如果我们想辅导别人,最好的办法就是让对方先写一段代码,我们对他的代码进行 Code Review。在辅导他人的过程中,我们可以快速地发现问题,从而帮助改进。

做好 Code Review可以增加公司对最顶级开发者的吸引力

工作中是否有 Code Review 对于公司或团队来说非常重要。不但对于公司或团队内的人员有所提升,而且能够吸引出色的开发者加入开发团队。

Code Review是摒弃个人英雄主义的作坊式开发模式的有效手段

在一个成熟的公司里,所有的架构设计、实现,都应该是一个团队的产出。尽管这个过程可能会有某个人来主导,但应该是经过整个团队共同智慧的结晶。

如果一个人默默的写代码提交,不经过团队的Review,这样的代码蕴含的是一个人的智慧。代码的质量完全依赖于这个人的技术水平。这就会导致代码质量层次不齐。如果经过团队多人Review,打磨,则代码蕴含的是整个团队的智慧,可以保证代码按照团队中的最高水准输出。

如何做好 Code Review?

在 Code Review 中要有一个好的态度

要做到以下几点

(1)对所有检查的代码逻辑要做到“完全看懂”,对于审核的代码,熟悉程度要做到“如数家珍”。如果在审核代码后,对代码的逻辑和背后的原因仍然很模糊,则是一个失败的 Code Review。

(2)好代码的标准,不仅仅是“可以运行通过”,在正确性、可读性、可重用性、可运维性等方面上,都需要综合考虑。

(3)建立 Code Review 和写代码一样重要的意识。即: ①Code Review 和写代码一样,也有产出,即产出更高质量的代码。② 审核代码在很多情况下比写代码还要辛苦,需要理解和找出问题等。

(4)以提升代码质量为最终目标。

(5)要投入足够的时间和精力。

①审核代码花费的时间经常和写代码一样多,有时甚至比写代码的时间更多,要有时间意识。

②要有责任意识。如果出现 bug,不仅仅是写代码人员的职责,也不仅仅是 QA 的职责,代码审核者也需要承担相当大的责任。

在做Code Review时,你需要注意以下:

  • 代码设计良好。

  • 代码功能对用户有用。

  • 任何UI改动应当是深思熟虑过而且看起来不错的。

  • 保证线程安全。

  • 代码没有增加不必要的复杂性。

  • 开发者没有写有些将来需要但现在不知道是否需要的东西。

  • 代码有适当的单元测试。

  • 测试逻辑设计良好。

  • 开发者使用了清晰明了的命名。

  • 注释清晰明了实用,通常解释清楚了为什么这么做,而不是做了啥。

  • 代码有相应完善的文档。

  • 代码风格符合规范。

确保你review了要求你看的每一行代码,确保你正在提升代码质量,并且为开发者做的提升点赞。

在 Code Review 时,发现不会用段落、不会写注释的代码,肯定不是好的程序员写的代码,可以直接打回给编写代码人员进行修正。

在 Code Review 中可能发现的问题?

→ 代码 bug;

→ 业务逻辑实现错误;

→ 拼写错误;

→ 未优化的代码;

→ 不必要的复杂代码;

→ 已经实现过的代码,又重复实现;

→ 注释不全;

→ case 没有覆盖全等等问题。

→ ...

Code Review 的注意事项

①在必要时,review 的双方做面对面的沟通。

面对面沟通并不是单指当面沟通,还包括云共享、电话、视频沟通等。在沟通时,对于背景、关键点等应进行说明,便于 reviewer 的理解。在必要时,应提供设计文档。

②对于关键模块,应该建立 owner 制度。

所有提交的代码,必须由 owner 做最终确认。由 owner 掌握全局,并建立明确的责任关系。

③检查中发现的问题,要一追到底。

④要注意细节。对每一行提交的代码,都要进行检查。

⑤Code Review 的方式,要小步快跑。每次提交 review 的代码量不要太多,降低复杂度。在特殊情况时,比如一个新模块的构建,最好逐步完成,通过多次进行提交。

⑥要为 Code Review 预留出足够的时间。Code Review VS Coding 的时间,有时可能达到 1:1。在这里需要考虑到有时会做大的修改,科学地规划工作量,尽量避免出现时间倒排。

⑦注意每天 review 代码的数量不宜过多。

Code Review 的步骤

Code Review 的步骤为以下几点:

Step1:先看系统全貌

不深究细节,浏览系统全貌,理清模块划分的逻辑、模块间的关系、如何构成的整个系统等。

Step2:进入模块级别

同样不深究细节,浏览模块内的全貌,判断模块切分是否合理,理清模块内的逻辑,明确关键数据、关键的类和函数等。

Step3:理清类、函数内部的逻辑。

Step4:进入细节。

比如 Layout、命名等。

What Do Code Reviewers Look For?

https://github.com/google/eng-practices/blob/master/review/index.md

Code reviews should look at:

  • Design: Is the code well-designed and appropriate for your system?

  • Functionality: Does the code behave as the author likely intended? Is the way the code behaves good for its users?

  • Complexity: Could the code be made simpler? Would another developer be able to easily understand and use this code when they come across it in the future?

  • Tests: Does the code have correct and well-designed automated tests?

  • Naming: Did the developer choose clear names for variables, classes, methods, etc.?

  • Comments: Are the comments clear and useful?

  • Style: Does the code follow our style guides?

  • Documentation: Did the developer also update relevant documentation?

人为因素

除了代码上的问题,在 Code Review 过程中还会有一些人为因素,例如:

QA 人员

好的 QA 人员不仅仅会发现系统中的 bug,还会质疑或提出产品需求,挑战或优化系统架构和实现方式。

②Code Reviewer

好的代码审核人员不仅仅指出代码表面的问题,还会检查系统需求分析的质量、接口或函数定义的合理性、模块划分的合理性、系统关键机制的合理性等。

如何成为一个好的 Reviewer

在做Code Review时,你需要注意:

  • 代码设计良好。

  • 代码功能对用户有用。

  • 任何UI改动应当是深思熟虑过而且看起来不错的。

  • 保证线程安全。

  • 代码没有增加不必要的复杂性。

  • 开发者没有写有些将来需要但现在不知道是否需要的东西。

  • 代码有适当的单元测试。

  • 测试逻辑设计良好。

  • 开发者使用了清晰明了的命名。

  • 注释清晰明了实用,通常解释清楚了为什么这么做,而不是做了啥。

  • 代码有相应完善的文档。

  • 代码风格符合规范。

确保你review了要求你看的每一行代码,确保你正在提升代码质量,并且为开发者做的提升点赞。

代码审核的质量,和审核者的代码能力直接相关。代码审核的质量差,反映的是审核者的代码水平。如果作为一个代码审核员不会写代码,就要承认真相,并且要不断提高自己的代码能力。


学习资料推荐

在这里推荐一些学习资料帮助大家进行学习。

《代码整洁之道》, 细节之处的效率,完美和简单。

《重构》,代码坏味道和相应代码的最佳实践。

计算机程序的构造和解释,这本书也很经典,是 MIT 的计算机科学系的教材。这本书中主要证实了很多程序是怎么构造出来的,以及程序的本质是什么。整本书主要是使用 Scheme/Lisp 语言,从数据抽象、过程抽象、迭代、高阶函数等编程和控制系统复杂性的思想,到数据结构和算法,到编译器 / 解释器、编程语言设计。

深入理解计算机系统,原书名为《Computer Systems A Programmer’s Perspective》。不过,这本书叫做《程序员所需要了解的计算机知识》更为合适。本书的最大优点是为程序员描述计算机系统的实现细节,帮助其在大脑中构造一个层次型的计算机系统。从最底层的数据在内存中的表示到流水线指令的构成,到虚拟存储器,到编译系统,到动态加载库,到最后的用户态应用。通过掌握程序是如何映射到系统上,以及程序是如何执行的,你能够更好地理解程序的行为为什么是这样的,以及效率低下是如何造成的。

《Effective Go》:  https://github.com/gqcn/effective-go-zh-en

Google Engineering Practices Documentation: https://github.com/google/eng-practices

参考资料

https://github.com/google/eng-practices

怎样在你的团队做 Code Review ?相关推荐

  1. Google是如何做Code Review的?| CSDN原力计划

    作者 | 帅昕 xindoo 编辑 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  2. 有必要做 Code Review 吗???

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料!作者:梨香 链接:https://juejin.im/pos ...

  3. 万字详文告诉你如何做 Code Review

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|机器学习实验室 前言 作为公司代码委员会 golang 分 ...

  4. 在腾讯,如何做 Code Review?

    作者:cheaterlin,腾讯 PCG 后台开发工程师 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code ...

  5. 你有做 Code Review 吗?

    在代码的编写中有一个很重要的环节,经常会被忽视,那就是 Code Review ,据说在 Facebook.Google 这种互联网大公司,要求每一个提交都必须通过审查,对于每个工程师来说 Code ...

  6. 在腾讯,如何做 Code Review

    作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少同学 code review 与写出好代码的水平有待提高.在这里,想分享一下我的 ...

  7. Google 是如何做 Code Review 的?| 原力计划

    作者 | 帅昕 xindoo 责编 | 屠敏 出品 | CSDN 博客 我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices docume ...

  8. Google是如何做Code Review的

    我和几个小伙伴一起翻译了Google前一段时间放出来的Google's Engineering Practices documentation,翻译后的github仓库https://github.c ...

  9. 万字详文告诉你如何做 Code Review!

    作者:cheaterlin,腾讯PCG后台开发工程师 来源:腾讯技术工程 前言 作为公司代码委员会 golang 分会的理事,我 review 了很多代码,看了很多别人的 review 评论.发现不少 ...

  10. 在腾讯,我们如何做 Code Review

      推荐关注 扫码关注"中生代技术",选择"星标"公众号 重磅干货,第一时间送达!责编:架构君 | 作者:cheaterlin,腾讯 PCG 后台开发工程师 | ...

最新文章

  1. [洛谷P2742]【模板】二维凸包([USACO5.1]圈奶牛Fencing the Cows)
  2. ssl双向认证和单向认证的区别
  3. 将weex项目打包的关键点
  4. Sublime Text 3安装Package Control快速建立html5和xhtml文档
  5. 转载: 8天学通MongoDB——第七天 运维技术
  6. Dynamics CRM 注册插件dll到GAC
  7. java获取jsp对象的属性_java-从jsp el中的对象获取布尔属性
  8. linux多线程学习(四)——互斥锁线程控制
  9. python抓包模块
  10. android下watchprosp和svc命令
  11. 算法和数据结构~Sqlserver索引使用的B树
  12. 新版USBCAN卡CAN分析仪的CANCANFD综合测试分析软件LKMaster主要功能介绍
  13. 线性规划图解法求最优解_线性规划的图解法6.ppt
  14. 自动量程万用表的实现原理_电子元器件用指针万用表、数字万用表、自动量程万用表测量原理图解大全教会您怎么看与测的呢?...
  15. 傅里叶变换的意义和理解(通俗易懂)
  16. 3.21 refused bequest
  17. Learn Git Branching 答案
  18. 二年级课程表(4月18日-4月22日)
  19. python_IED工具下载(pycharm)_windows版
  20. Matlab isnan isinf median circshift 函数

热门文章

  1. bert代码解读2之模型transformer的解读
  2. 【Android 安装包优化】WebP 图片格式 ( WebP 图片格式简介 | 使用 Android Studio 转换 WebP 图片格式 )
  3. tbase安全和脱敏
  4. 正则表达式匹配经纬度
  5. 企业实现均衡生产,车间管理系统来支持
  6. zabbix监控系统
  7. ios7下弹出新浪微博界面,一出现就消失的问题
  8. python行列式值计算程序_2、3阶行列式计算(python代码)
  9. NPN与PNP三极管
  10. Affinity笔记:渐变工具