彼得天空-个人心地带 彼得天空-个人心地带

红烧鲍鱼,一斤等于多少两,香菇炒肉-彼得天空-个人心地带

在日常写完代码之后,你是否会有 Code Review 的习气?

Code Review 即代码查看,其意图在于找到开发时被忽视的 Bug,以此极大地进步代码质量也能够协助开发者们愈加了解项目。但惋惜的是,许多业界的开发者并没有惯例代码查看的习气。那么关于程序员而言,Review 是否真的是一项必备的作业?

作者 | Gergely Orosz

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

十多年来,我常常担任代码查看的作业。代码查看的优点许多:从其他人的视点阅览代码改变、常识同享以及东西和主动化改善。假如你们没有代码查看,那么我激烈主张你遵照Jeff Atwood于2006年共享的这项主张(https://twitter.com/codinghorror)。

许多人和安排共享了有关代码查看的最佳实践,以及杰出的代码查看的含义。SmartBear团队、Palantir工程团队和工程师Philipp Hauer共享的攻略都是很好的阅览资料。以下是我个人对杰出的代码查看的观点,以及怎样才能做到更好。本文的布景是我作业中的技能环境,包含现在我地址的Uber,以及曾经微软的Skype和Skyscanner。


代码查看所包含的范畴


杰出的代码查看人员会查看代码自身的改变以及这些改变是否合适已有代码。他们会细心研讨标题和描绘,以及代码改变的“原因”。他们还会查看代码的正确性、测验覆盖率、功用改变并承认是否遵从了编程攻略和最佳实践。一起,他们还会指出显着有待改善的当地,例如难以了解的代码、含糊的称号、注释掉的代码、未经测验的代码或未处理的边际状况。终究,他们还会留意,假如一次提交包含了太多代码改变的话,则主张代码的改变应该坚持单一意图性,并将代码改变分解成方针更为会集的几部分。

更优异的代码查看人员还会从体系全体的视点查看代码改变,并查看这些改变是否易于保护。他们或许会问询代码改变的必要性,或对体系其他部分形成的影响。他们会研讨代码中引进的笼统以及与现有的软件架构的适应性。此外,他们还会调查可保护性,例如是否能够简化的杂乱逻辑、测验结构、重复和其他或许的改善。工程师Joel Kemp在这篇文章中(https://medium.com/@mrjoelkemp/giving-better-code-reviews-16109e0fdd36),将这些代码查看区分成了两个等级:开始查看与全面的查看。


查看的基调


代码查看的基调能够极大地影响团队内部的士气。尖锐的谈论或许会导致恶劣的作业环境。自以为是的言语或许会让人们感受到仇视,然后引发剧烈的争辩。一起,专业且活跃的口气能够培育更容纳的环境。这些环境中的人们能够承受建设性的反应,并且代码查看会引发健康和火热的谈论。

杰出的代码查看人员会提出开放式的问题,而不是宣布激烈或自以为是的陈说。他们会供给代替计划或其他处理办法。这些查看人员会以为自己或许遗漏了某些内容,因而他们首要会要求对方弄清,而不是要求对方改正。

更优异的代码查看人员赋有同情心。他们知道编写代码的人花了许多时刻和精力来应对这些改变。这些代码查看人员仁慈且不张扬。他们会大力欣赏杰出的处理计划,并采纳全面活跃的举动。


同意与恳求改变


杰出的代码查看人员不会在有开放式问题的时分同意代码更改。 可是,他们会清晰指出哪些问题或谈论没有形成堵塞或不重要,一般这样的审阅定见被称为“挑剔”。他们只在改变十分清晰的状况下同意改变(例如,注明“在我看来很好”)。当需求跟进时,他们同样会清晰地运用代码查看东西或依照团队的习气进行交流。

更优异的代码查看人员在面临需求答复某些问题或处理重要问题之前,也不会同意代码更改。这种审阅在原则上是坚决的,但在实践上却是灵敏的:有时,写代码的人会在后续代码改变中独自处理审阅指责的问题。有些更改比较紧迫,所以查看人员会尽快地推进查看。


从代码查看到互相攀谈


杰出的代码查看人员会尽或许地留下谈论和问题。假如通过修改后依然有残留问题,他们也会记录下来。假如来回的谈论过多,那么审阅人员会抛弃过于耗时的东西,而挑选面临面攀谈。

更优异的代码查看人员在第一次审阅结束,但有许多谈论和问题时,会主动联络写代码的人。他们知道与其在谈论中来回重复,还不如面临面的攀谈,由于这种办法能够节约许多的时刻,还能够省却不少误解和费事。许多针对代码的谈论标明,查看两边往往会存在一些误解。互相的攀谈更简单消除误解。


吹毛求疵


如前所述,杰出的代码查看人员会清楚地标明哪些谈论不重要,或有点挑剔。这方面的查看问题包含变量声明按字母顺序排列、测验结构遵从某个结构或括号坐落同一行或下一行。

一般,杰出的代码查看人员不会有太多的挑剔。鸡蛋里挑骨头会冲击人的活跃性,并且也会让我们损失对重要问题的重视。

更优异的代码查看人员了解太多的挑剔意味着缺少东西或缺少规范。常常遇到这些问题的审阅人员会考虑在代码查看流程之外处理这个问题。 例如,大多数常见的挑剔都能够通过主动linting来处理。假如无法通过东西处理,则应该由团队洽谈选用某些规范来处理,然后持续跟进这个问题,乃至能够主动化。


新参加代码查看的人


杰出的代码查看人员会天公地道,选用相同的质量规范和办法,不管他们的职位,等级以及参加公司的长短。依据上述内容,一般代码查看人员都会很和蔼,只在有必要的时分恳求改变,并在收到许多定见时与他们进行攀谈。

更优异的代码查看人员愈加重视给新参加的人留下一个好形象。查看人员了解新来的人或许不了解一切的编程攻略,并且也或许不了解代码的某些部分。所以,他们会进一步尽力解说代替计划,或主张他们阅览编程攻略。他们还会运用十分活跃的口气,鼓舞写代码的人刚开始提交的代码改变。


跨作业室及跨时区查看


假如写代码的人和查看人员不在同一个地址时,代码查看会变得更困难。当审阅人员坐落不同的时区时,这种难度就会更高。多年来,我力求公平地查看一切代码,不管是美国、亚洲仍是欧洲团队所提交的代码。

杰出的代码查看人员会尽或许地考虑时区差异。查看人员都会尽力在两边都作业的时刻内查看代码。假如遇到许多谈论的状况,则会挑选直接谈天或进行视频通话。

更优异的代码查看人员在重复遇到时区问题时,就会尽力寻觅代码查看结构之外的体系处理计划。假定某个欧洲的团队常常更改某项服务,而代码查看则由美国担任这项服务的人来进行。体系级的问题是,这些改变如此频频发作的原因是什么?跟着时刻的推移,改变的频率相同仍是下降了?假定代码改变是在正确的代码库中完结的,且频率没有下降,那么是否应该打破这种跨部门的依靠性?处理这些问题往往不简单,或许触及重构,或许创立新的服务/接口,或改善东西。免除这种依靠联系会让两个团队都愈加轻松,更有用地推进作业。


安排的支撑


公司及其工程安排怎么看待代码查看是影响代码查看的重要因素。假如安排以为代码查看无关紧要或微乎其微,就不会在这方面投入太多。在这样的文明中,在某些状况下,开发人员将不得不抛弃代码查看。倡议施行更好的代码查看的工程师或许会感到孤立,并且也无法取得取得上述支撑,终究抛弃。假如安排以为代码查看是工程中的要害部分,那么他们就会为工程师供给更好的作业环境。

具有杰出代码查看的安排会保证一切工程师都参加代码查看流程,包含那些独自在某个项目上作业的人员。他们鼓舞进步质量规范。这些团队会活跃地谈论从团队和安排层面展开代码查看。一般,这些公司都有工程师建议和编写的大型代码库的代码查看攻略。这样的安排中,了解代码查看会占用工程师的许多时刻。许多这样的公司在招聘开发人员时,也会将代码查看作为一项重要的作业能力,并期望高级工程师花费更多的时刻来查看其他人的代码。

具有更好的代码查看的安排会树立硬性规矩:没有通过代码查看的代码不能投入到出产中,就像没有通过主动化测验的事务逻辑更改不能进入出产环境相同。这些安排了解,减少这样的本钱底子不值得,相反他们具有在紧迫状况下,加快查看团队和安排代码查看的流程。这些安排会出资进步开发人员的作业效率,其间包含更有用的代码查看和东西改善。这些公司的高管一般都是软件工程师,你不需求压服他们有关代码查看和其他工程最佳实践的优点。相反,他们支撑团队使用更好的东西,或更有用的代码查看流程。

当写代码的人感受到歹意的谈论时,他们能够说出来并全力支撑处理问题。高级工程师和管理人员以为不合格的代码评定与残次的代码或不健全的功用平等严峻。工程师和工程经理都感觉有职责改善代码查看的展开办法。

原文:https://blog.pragmaticengineer.com/good-code-reviews-better-code-reviews/

作者:Gergely Orosz,软件工程师,首要从事移动、Web和后台开发。

本文为 CSDN 翻译,转载请注明来历出处。

【End】

 热 文 推 荐 

☞CSDN 创始人蒋涛:国际被编码之后

☞马化腾评 Facebook 加密钱银;苹果或将 15% 产能移出我国;Python 新版发布 | 极客头条

怎么从技能上“绞杀”盗链者?

☞不是码农,不会敲代码的她,却最懂程序员!| 人物志

☞10分钟读懂什么是容器云?

☞第二! 他排中本聪与V神中心, 单靠文字就“打败”了敲代码的程序员!

☞不让华为收专利费?美议员提案“秀下限”

☞直播写代码|英伟达工程师亲授怎么加快YOLO方针检测

☞她说:程序员脱离电脑便是 “废物” !

点击阅览原文,即享优惠购票!

你点的每个“在看”,我都仔细当成了喜爱
作者:admin 分类:最近大事件 浏览:305 评论:0