研发同学都知道代码审查的重要性,腾讯代码审查也越来越受到大家的关注。作为腾讯自有云平台研发的一员,我参与了很多代码审查,可见有效的代码审查不仅可以提升代码质量,还可以促进团队沟通协作,建立更高的工程质量标准,对个人和团队都具有重要价值。这篇文章分享了我个人对为什么要进行代码审查以及如何有效地进行代码审查的看法。为什么要做codereview为什么需要codereview,相信大家心中都有一个比较一致的答案,google一下也能搜到不少文章。这里有几点简单总结一下:1)提高代码质量这是codereview的初衷,也是codereview最直接的价值所在。审阅者根据自己的经验、思维方式、看待问题的角度,对代码提出各种可能的改进建议,以形成更好的代码和产品质量。我们知道,越晚提出产品问题,解决它的成本就越高,参与的人也会越来越多,流程也会越来越多。代码审查可以说是早期解决问题最有效的方法之一。解决codereview中哪怕是一个小问题,也能避免很多后续的麻烦。2)形成团队统一的高质量标准有效的codereview最终会在团队内部建立统一的质量标准,并随着团队成员的相互学习和相互促进形成更高的标准。在代码审查过程中,参与者会根据具体问题,从不同角度提出改进建议,最终做出最佳选择,形成共识。随着代码审查的有效进行,团队成员会自觉地关注代码质量,从而形成越来越高的事实上的质量标准。3)快速的个人成长通过有效的代码审查,作者和审查者都会成长。在评审过程中,参与者针对具体问题进行深入讨论,无论是如何写出干净的代码,还是如何更好更全面地思考问题,如何最好地解决问题,参与者都可以互相学习和借鉴互相提高。通过具体的代码实现进行讨论往往是最深入和有效的,代码审查是开发人员提高代码能力的最重要途径之一。有人认为代码审查就是Reviewer帮助发现代码中的bug。事实上,codereview不应该是一个单向的过程,而应该是一个双向沟通的过程。学习过程。我们都知道提高代码能力的有效途径就是阅读优秀的项目代码,但是阅读项目代码难度不小,这也是为什么大部分人不去实现的原因,而Review前辈同事的代码,我们是阅读代码同时,能够直接有效地进行交流是一种快速有效的学习方式,尤其是对于开发经验还不丰富的开发者来说。如何做好代码审查2.1.第一招:什么时候发起review在codereview上,Author需要意识到reviewer的时间是昂贵的。因此,作者在正式邀请Reviewer发起codereview之前,有几点需要注意,可以提高codereview的效率,节省Reviewer的时间。2.1.1.MR(MergeRequest)也称为PR(PullRequest)。MR是我们进行代码审查的地方。它记录了代码的具体变化和参与者的具体讨论过程。一个好的MR应该做到以下几点:Single:一个MR应该只解决一个单一的问题,无论是修复一个bug还是实现一个新特性。作者应该避免包含具有不同意图的代码更改的MR。单个MR可以帮助Reviewer快速了解代码变更的动机并进行有针对性的审查。短:MR应尽可能小。比如一个特性引入了很多变化,需要考虑是否可以拆分成几个独立的实现,MR应该单独分开,比如接口定义,接口实现,逻辑对接等。详解:详解这里的意思是MR应该尽可能详细地描述它的背景和动机,这些可以在MR的描述中详细体现,或者联系到一个具体的issue或tapd列表。需要达到的目标是其他人在打开MR时可以知道进行此更改的背景和动机。2.1.2.CommitMessage之前翻了很多已有的项目代码,看到很多CommitMessage写的比较简单,比如一系列的“update”和“fix”。有什么变化,想好以后要定位以前的变化从哪里入手。目前CommitMessage规范与Angular团队的规范比较通用,ConventionalCommitsSpecification是从中衍生出来的。您可以参考本规范,就CommitMessage格式规范达成一致。():