最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

代码审查最佳实践

  • 2015-05-13
  • 本文字数:1218 字

    阅读完需:约 4 分钟

代码走查是可以有效提高软件开发人员代码质量的伟大工具之一。不过与其他工具一样,代码走查也有可能会被滥用。在其最近发布的一篇博文中,Kevin London 将其在 Wiredrive 的代码走查的原则具体化,并且为读者介绍了应用这些原则的最佳实践。

简而言之,代码走查是两个或多个开发人员针对用于解决某一问题的代码所提出的修改建议,所进行的讨论。有许多文章都谈及到代码走查的益处,如知识分享、代码质量以及开发人员成长等。不过在关于代码走查中所寻求的目标以及如何进行代码走查讨论方面的文章并不多。

代码走查所寻求的目标

体系架构 /设计

在体系架构 / 设计方面,建议遵循如下原则:

  • 单一职责原则每个类应该有且只有一个职责。更甚于此,我一般会将此原则应用于方法之上。对于某个方法来说,如果需要用“和”来描述方法的功能,那么该方法的抽象级别就可能是有问题的。
  • 开 /闭原则如果是面向对象的语言,那么是不是所有的对象都对于扩展是开放的,而对于修改是封闭的?
  • 重复代码:关于重复代码,我遵循“三振出局法”。第一次出现代码拷贝,可以保持现状,暂不处理,尽管我并不喜欢这样。如果第二次出现代码拷贝,就需要进行代码重构,将公共的功能抽象出来。

在系统架构和设计方面,除了上述实践之外,还包括诸如斜视测试攻击、潜在缺陷、错误处理以及效率等。

编码风格

在编码风格方面,主要包含如下方面的最佳实践:方法命名、变量命名、函数长度、类长度、文件长度、文档注释、已注释代码、方法参数数量以及可读性等。

测试

从测试的角度来说,则需要从测试覆盖度、测试粒度、模拟器的数量、是否符合需求等方面考虑代码走查工作。

提前完成代码自检

在提交代码之前,要提前完成代码自检。使用 git add 添加有改动的文件或目录,然后运行 git diff --staged 命令检查尚未提交的改动。一般来说,会关注如下情景:

  • 是否有包含 TODO 的注释?
  • 变量名称是否有意义?
  • 以及其他前述所提及的事项。

如何处理代码走查

在如何处理代码走查进程方面,Kevin London 提出了一系列关于代码讨论所用的手段。包括提出问题、称赞 / 强化良好实践、私下讨论细节、解释原因、对代码不对人、指出修复的重要性等。

关于心态

开发人员有责任保持可正常运转并且易于维护的代码。因此在代码走查的过程中,务必要保持开放的心态。虽然这对于所有人而言都并非易事。

一般来讲,对于审查人员所提出的建议,如果没有明确的不采纳理由,最好根据建议修改代码。如果审查人员对某行代码提出问题,也就意味着这行代码将来也会对其他人造成困扰。此外,代码改动有可能会帮助揭示出更大的架构性问题或缺陷。

参考资料

整洁代码艺术书单

关于代码走查最佳实践更多详细的介绍,请参考作者的博文


感谢崔康对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-05-13 08:594828
用户头像

发布了 75 篇内容, 共 62.0 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

安全网关是啥什么东西?有什么优势?与堡垒机的区别是什么?

行云管家

网络安全 堡垒机 运维审计 安全网关 堡垒机防火墙

大巧不工,袋鼠云正式开源大数据任务调度平台——Taier(太阿)!

袋鼠云数栈

数据库 开源

IP(定位数据库)地理位置查找真的能有效帮助阻止网络攻击吗?

郑州埃文科技

IP定位 IP数据库

淘特 Flutter 流畅度优化实践 · 二期

阿里巴巴终端技术

flutter

自助洗车机厂家如何选?要注意什么

共享电单车厂家

自助洗车机多少钱 自助洗车加盟 自助洗车机厂家

netty系列之:netty中的核心编码器base64

程序那些事

Java Netty 程序那些事 4月月更

Google如何申请客户端ID并调试代码?

CRMEB

产品宣传手册是如何制作的?

小炮

产品宣传册

我和TiDB的故事 | 毫无准备地不期而遇,却想说与你相遇好幸运

TiDB 社区干货传送门

百度智能云天工边云融合物联网平台,助力设备高效上云

百度开发者中心

投资自助洗车机要多少钱?看情况

共享电单车厂家

自助洗车加盟 投资自助洗车机 自助洗车机要多少钱

企业如何突破数据治理临界点,四大数据要素深度剖析

袋鼠云数栈

大数据 数据中台

招商银行 KubeVela 离线部署实践

阿里巴巴中间件

阿里云 最佳实践 云原生 中间件 KubeVela

聚焦丨看泛建材巨头如何实现数字化改造,推动企业业务增长

数商云

产业互联网 数字化转型 企业数字化

集合去重的境界

flyhero

Java 程序员 后端 4月月更

WebApi性能优化

神农写代码

龙蜥社区第七次运营委员会会议顺利召开

OpenAnolis小助手

开源社区 龙蜥社区 理事单位 运营委员会

K8S Pod 新安全策略 Pod Security Admission 介绍 | K8S Internals 系列第一期

BoCloud博云

Kubernetes Pod Security Policy Pod Security Admission

系统性能分析从入门到进阶

阿里巴巴中间件

云计算 阿里云 云原生 中间件

漏洞挖掘之目录遍历漏洞

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

数字化转型-信息技术引发的系统性变革

Geek_XOXO

企业数字化转型

被你质疑价值的混沌工程,阿里巴巴已落地实践了9年

阿里巴巴中间件

阿里云 云原生 中间件 混沌工程

自助洗车机设备一台多少钱划算

共享电单车厂家

自助洗车机多少钱 自助洗车机设备价格

智能运维时代,如何做好日志全生命周期管理

云智慧AIOps社区

日志 智能运维 日志管理

16 台服务器达成 1000 万 tpmC!挑战分布式数据库性能极限

SphereEx

opengauss ShardingSphere SphereEx apache 社区 分布式解决方案

对话达梦副总经理冯源 | 假如你身处被“科技制裁”的俄罗斯-墨天轮专访

墨天轮

数据库 oracle 国产数据库 达梦

后端开发【干货知识】—Redis,Memcached,Nginx网络组件

Linux服务器开发

reactor 中间件 后端开发 组件 Linux后台开发

小区自助洗车机赚钱吗?想投几台

共享电单车厂家

自助洗车加盟 投资自助洗车机 自助洗车投资费用 自助洗车是否赚钱

RocketMQ-Streams架构设计浅析

阿里巴巴中间件

阿里云 RocketMQ 云原生 中间件

社区文章|MOSN 社区性能分析利器——Holmes 原理浅析

SOFAStack

golang GitHub 开源 SOFA

【ELT.ZIP】《CCF开源高校行第一期》观后感

ELT.ZIP

Linux LVS OpenHarmony ELT.ZIP CCF开源高校行

代码审查最佳实践_最佳实践_丛一_InfoQ精选文章