天天看点

项目代码审查

一、为什么要代码审查?

代码审查(英语:Code review)是指对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。代码审查常以不同的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查。

Code Review 的首要目的是改善和保证代码质量,预防 bug,也是熟悉软件架构,了解软件业务逻辑的好方法。此外还有益于制定团队代码规范,形成团队技术氛围,加深技术团队成员沟通,老带新互助成长等等。有些团队里 Code Review 处于开发流程的边缘位置,有些团队 Code Review 处于代码编写到部署的必经部分。对于我们来说,Code Review 是代码编写到部署的必经部分,所有代码都必须经过 Review 才能 merge。

二、Code Review 怎么做?

要做代码审查,有资深开发、高级开发、中级开发、初级开发四个级别岗位都在写代码。是让资深审查高级开发的代码、高级审中级、中级审初级好呢?还是让资深审中级、高级审初级的代码好呢?

二、Code Review 分类

代码审查的四种方式:

参考链接:https://blog.csdn.net/ywl570717586/article/details/89916025

三、Code Review 实用性操作

1、对事不对人

大家是同事,在一个团队工作和气很重要,不要在 Code Review 中说“你写的什么垃圾东西这种话”,你可以说“这个变量名不好理解,咱们换成巴拉巴拉是不是更好”。

2、每个 Review 至少给一条正面评价

Code Review 本意是改善代码质量,增强团队成员之间的沟通,但是我一提交代码就有人说我写的垃圾,这很打击自信心啊,也不利于团队成员和平相处。代码有问题,指出问题是必须的,要实事求是,但是有的时候也需要给队友一点鼓励,例如简单的 或者“赞一个”我都很开心了。

3、保证发布的代码和评审意见的可读性

大家都是程序员,你提交代码的时候,在符合团队风格的同时,把代码弄的好看点,如果你明确自己这个代码哪个地方不足,Highlight 出来让大家给意见。如果你是来 Review 代码的,把意见写的通顺点,评论有条理一些。对反引号 (`) 嵌入代码或三个反引号 (```) 写代码块,这样看的舒服得多,效率也高。

4、用工具进行基础问题的自动化检查

用 Tab 还是空格,用两个空格还是四个空格,函数后面怎么换行等基础问题检查,可以使用 eslint 和Rubocop 等类似的工具进行,团队成员应该把更多精力放在代码规范,代码性能优化等地方。

5、全员参加 Code Review

并设定各部分负责人。扩大 Code Review 参与面,参与不是说一定去审核别人的代码,可以是代码被审核,也可以是看别人审核意见,这都是学习的过程。并且每部分设定负责人,该负责人对这部分代码质量负责,负责人需要是资深工程师。全员参与 Code Review 可以让团队成员更快的成长,新人在看大佬 Review 代码的过程就能学到很多。

6、每个代码 PR 内容一定要少

Code Review 效果和质量与 PR 代码量成反比,你一下提交这么多代码,我今天还下不下班了? 我女朋友你帮我陪?每次 PR 代码量小一些,看起来速度快,又不至于失去耐心,这样才能达到 Code Review 的效果,所以要经常进行 Code Review,但是每个 PR 代码量要少。我建议要少于 300 行/PR。

7、在写新代码之前,先 Review 掉需要评审的代码

你让我去 Review 一周前的代码?我还得把思维和项目进度切换到一周前?大家肯定不愿意,所以要形成规定,写新代码之前先把旧的 Review 掉,提交 PR 的时候也保证代码量小,这样 Review 起来不需要大块时间,改起来也快。不能因为 Code Review 大幅耽误项目进度,进度是全团队的事,不是某个人的事。

8、 如果你有更好的方案,尽管提出来

在 Code Review 中经常会发现写的不好的地方,如果你有更好的方法,欢迎提出来!首先能改进这个 PR 的代码,其次能体现你的能力,团队应该定期对这种提出好的解决方案的同事进行奖励。

9、不要在 review 中讨论需求,review 就是 review

不要在 Code Review 里搞别的,有需要就另安排时间进行,要明确 Code Review 是完善代码,不是需求和功能讨论,始终要以代码质量为中心。

推荐Code Review 工具

Crucible: Atlassian 内部代码审查工具;

链接:https://www.atlassian.com/zh/software/crucible

Gerrit: Google 开源的 git 代码审查工具;

链接:https://www.gerritcodereview.com/

GitHub/GitLab: 程序员应该很熟悉了,上面的 “Pull Request” 在代码审查这里很好用;

链接:这个大家都使用就不发链接了。

LGTM: 可用于 GitHub 和 Bitbucket 的 PR 代码安全漏洞和代码质量审查辅助工具;

链接:https://lgtm.com/

Phabricator: Facebook 开源的 git/mercurial/svn 代码审查工具;

链接:https://www.phacility.com/phabricator/

PullRequest: GitHub pull requests 代码审查辅助工具;

链接:https://www.pullrequest.com/

Pull Reminders: GitHub 上有 PR 需要你审核,该插件自动通过 Slack 提醒你;

链接:https://pullreminders.com/

Reviewable: 基于 GitHub pull requests 的代码审查辅助工具;

链接:https://reviewable.io/

Sider: GitHub 自动代码审查辅助工具;

链接:https://sider.review/

Upsource: JetBrain 内部部署的 git/mercurial/perforce/svn 代码审查工具。

链接:https://www.jetbrains.com/upsource/

原文内容链接:https://www.zhihu.com/question/20046020/answer/555007256

继续阅读