7 个 code review 的技巧(转)

简介: Code review,中文译为「代码审查」,是指对代码进行系统性的审查,通常是和其他开发者来共同进行。这里作者就讲了在 Asana 中他们是怎么来做代码审查的。1.先确定 code review 的目标优先级在 code review 之前先和你的团队成员明确 code review 中事项的优先级。
Code review,中文译为「代码审查」,是指对代码进行系统性的审查,通常是和其他开发者来共同进行。这里作者就讲了在 Asana 中他们是怎么来做代码审查的。


1.先确定 code review 的目标优先级


在 code review 之前先和你的团队成员明确 code review 中事项的优先级。

作者认为 code review 中应该做的事:

  • 熟悉同事在编程时的思考方式,这样其余同事以后如果有需要就可以更轻松、快速的修改代码。
  • 向同事介绍修改了哪些文件,增加了什么样的功能,这样在问题出现时,可以保证至少有两个人可以帮助诊断、解决问题。

不建议在 code review 中做的事:

  • 找 bug。自动化测试、运行程序要比几个人坐着看代码有效率多了。
  • 检查代码规范。现在的 IDE 和编辑器都有自动规范代码的工具,为什么还要在这方面浪费人力呢?


2.把程序跑起来


读其实是一种很不自然的和代码交互的方式。仅仅靠读代码来找 bug 效率实在不能算高,要知道计算机能比你的大脑更好地运行代码。

把程序运行起来,亲自试一试,或许你会有一些和他们测试时不同的操作,发现一些他们遗漏的问题。

并且现在的 IDE 中断点调试,都能够很详细的显示运行时的程序数据,这能帮助你更容易的理解这段代码是如何运行的。


3.明确方法的调用层次


作者发现很多人谈起 code review 的第一印象就是一堆人坐在一个电脑面前一行一行的看代码。但这么做其实效率是很低的,除非你的经验非常丰富,否则真的不建议就靠一双眼睛和你的大脑来做 code review。用工具明确方法的调用层次,能帮助你更有效的梳理代码逻辑。


4.尽可能及时的进行 code review


当你收到别人的 code review 邀请时,尽量第一时间就开始。因为这时作者的记忆是最清晰的,并且通常会对你的及时反馈心怀感激,这种正面情绪对于 code review 是非常有帮助的。

如果你觉得自己在面对 code review 时有困难的话,作者在这里推荐了两个方法:

  • 事先设置一个时限,比如半小时。也就是在你的第一次 review 中,先花半个小时理解变动的代码,写下自己的问题。如果在这个时间范围内,你不能确定代码变动是否没有问题,把你的想法和问题先发给作者,之后再确定一个时间进一步的 review。
  • 在你的机器上保留两个独立的仓库。一个用于你自己的修改,另一个用于 review。这样你和作者之间的修改就能够保持彼此独立。


5.在你读代码之前,先想想自己会怎么做


先读一下功能说明,思考下如果是自己来可能会怎么做,之后再查看作者实际做出的修改。如果有和你想得不一样的地方,就可以和作者进行交流,讨论清楚为什么。这样做能使得你们两个都得到成长,还能提高 code review 的效率。


6.在实际的开发环境中 review


现在的 code review 早就不是光用眼睛看啦,各种强大的 IDE 完全可以成为我们的一大助力。善用 IDE 的力量。


7.不要吝啬你的赞扬,除非你能证明那里确实有一个 bug


每个人的内心深处都是期待被别人称赞的,因此在 code review 开始的时候不要老是揪着变量命名、代码重复之类的问题。先集中注意力在真正重要的地方,给作者一个舒服、放松的心态(通常刚开始 code review 的时候作者是会很紧张的)。这样他们也就会乐于接受你对于代码风格等方面的建议了。: )

作者:Hevin https://zhuanlan.zhihu.com/p/24562689


更新关注:http://weibo.com/hanjunqiang  新浪微博!手机加iOS开发者交流QQ群: 446310206


目录
相关文章
|
Oracle 关系型数据库 数据库
Oracle 11G常见性能诊断报告(AWR/ADDM/ASH)收集
Oracle 11G常见性能诊断报告(AWR/ADDM/ASH)收集
717 0
|
8月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
56648 11
|
Java 测试技术 Docker
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
Spring Boot 学习研究笔记(十九)-docker部署SpringBoot 日志目录挂载
1107 0
|
5月前
|
人工智能 算法 Shell
灵码+Qwen3-Coder——使用Skill机制实现代码审核
本文介绍如何在灵码中实现Claude Skills能力:基于openskills方案,通过配置project_rules.md适配Skill元数据与SKILL.md提示模板,支持动态加载领域知识(如代码审核、DOCX生成),实现模块化AI能力扩展与按需调用。
灵码+Qwen3-Coder——使用Skill机制实现代码审核
|
1月前
|
人工智能 运维 安全
Java领域AI Agent开发首选框架:Harness Agent特性、实战用法全面解读
在智能化技术全面渗透软件开发领域的当下,AI Agent智能体已经成为应用开发、业务流程自动化、系统运维、智能交互场景中的核心技术形态。Java作为企业级开发领域应用最广泛、生态最成熟的编程语言,长期占据后端服务、大型分布式系统、政企项目、金融业务系统等核心赛道。但在AI Agent技术落地过程中,传统Java开发模式却暴露出明显短板,原生语言体系缺少针对智能体调度、工具调用、多轮会话、任务编排的标准化组件,开发者想要从零搭建AI Agent应用,需要整合大量第三方组件、自主设计通信逻辑、封装模型调用接口,开发周期长、代码冗余度高、后期维护难度大。
339 0
|
设计模式 供应链
一文教会你如何写复杂业务代码
了解我的人都知道,我一直在致力于应用架构和代码复杂度的治理。 这两天在看零售通商品域的代码。面对零售通如此复杂的业务场景,如何在架构和代码层面进行应对,是一个新课题。针对该命题,我进行了比较细致的思考和研究。
38929 3
|
12月前
|
监控 安全 NoSQL
【DevOps】Logstash详解:高效日志管理与分析工具
Logstash是ELK Stack核心组件之一,具备强大的日志收集、处理与转发能力。它支持多种数据来源,提供灵活的过滤、转换机制,并可通过插件扩展功能,广泛应用于系统日志分析、性能优化及安全合规等领域,是现代日志管理的关键工具。
1623 0
|
JSON 安全 数据格式
详解python pickle中的反序列化漏洞
今天我们来聊聊Python里的反序列化攻击。先来看看什么是序列化和反序列化。简单来说,序列化就是把数据结构转换成字节流,这样我们就可以把数据保存到文件里或者通过网络传输。反序列化则是把这些字节流再转换回原来的数据结构。 在Python里,常用的模块之一就是Pickle。它可以帮我们很方便地进行序列化和反序列化操作。比如,你可以把一个复杂的Python对象序列化保存下来,等需要用的时候再反序列化回来。 反序列化攻击的概述 反序列化过程有漏洞:如果我们反序列化了一个不可信的数据源,那就可能引发反序列化攻击。攻击者可以在序列化的数据里嵌入恶意代码,当你反序列化这个数据时,这些恶意代码就会被执
|
设计模式 Java 开发者
如何在Java项目中实现领域驱动设计(DDD)
如何在Java项目中实现领域驱动设计(DDD)
1073 3