写点什么

设计和代码审查:是好、是坏还是不堪入目?

2008 年 3 月 10 日

在一篇有关设计和代码复查的文章中, Kirk Knoernschild 提到,这种复查的承诺是改进软件质量、确保与标准的一致性,并且可以作为一种有价值的工具为开发人员服务,但是它们的执行方式却影响到了自身的价值。在某些组织中,它们可能真的见效;而在另一些地方,可能也不过是官僚作风的一种体现而已。

他认为下面这些就属于最糟糕的复查实践:迫害式复查——编写代码的开发人员有被攻击的感觉,甚感恐惧。

花括号复查——只强调排版结构和缩进之类的琐碎细节,而置更为严重的问题于不顾。

盲查——复查人在参与复查之前从来没有看过一眼代码,并在未经准备的情况下参加复查会议。

排它性复查——只拿出代码中的某一段样本来进行复查,把其他重要的部分都弃而不顾。

樵夫式复查——一直等到代码库变成庞然大物再进行复查,而这时要进行完整的复查已经变成了难如登天且事倍功半的任务。

令箭式复查——将复查活动形式化,只因为是管理层打算这样做。

世界性复查——在为数众多且大部分都与项目无关的人士之前进行复查,并因此令开发者惶恐不安。

Kirk 认为,为了进行有效的复查,团队必须力求将复查过程做到自动化,同时收集一些度量标准。团队还应该把反馈机制纳入他们现有的开发环境中,这样开发人员在准备提交代码前就会收到自动警示提示。

他提到有些工具可以将复查过程变得更加客观、关注点更为集中:

Kirk 还提到了一种用来进行复查的有趣方式,名为 20% 复查:

20% 复查的想法是很简单的:一旦开发完成了 20%,那么就应该进行一次复查。对有些团队来说,在每一次迭代中都进行 20% 复查会收到显著成效。它的效果 确实不错,不过如果开发团队可以成功地使用度量标准进行持续复查,那么针对每一个主要的系统功能进行 20% 复查就足够了。20% 复查应当关注初始设计和代码的整洁。在代码库大小相对易于管理时,上面提到的度量标准可以深入洞察代码的演化和发展状况。

他在文末又强调了要通过使用度量标准来将复查过程变得更具客观性、关注点更集中的重要性,以此作为全文的收束。自动化程度越高,就越容易达到这些标准,然后就可以进行有效的复查。复查应该尽早进行,这样开发者才能够把早期的收获用到开发过程中,复查的有效度不会受到损害。

查看英文原文 Design and Code Reviews : The Good, Bad and Ugly

2008 年 3 月 10 日 11:04412
用户头像

发布了 197 篇内容, 共 44.8 次阅读, 收获喜欢 15 次。

关注

评论

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

基于证券云服务的总体架构设计应该怎么做?

Jason Tien

对DevOps的九大误解,你是否也“中过招”?

华为云开发者社区

DevOps 运维 敏捷开发 开发 自动化测试

【LeetCode】托普利茨矩阵Java题解

HQ数字卡

算法 LeetCode 28天写作 2月春节不断更

诊所数字化:诊所开展私域运营的优劣势

boshi

医疗 私域运营 七日更 28天写作

话题讨论 | 你在互联网大厂是个啥级别?

架构精进之路

话题讨论 28天写作 话题王者

阿里开发7年大牛:Android事件分发机制及设计思路,分享PDF高清版

欢喜学安卓

android 程序员 面试 移动开发

容器 & 服务:一个Java应用的Docker构建实战

程序员架构进阶

Docker 容器 七日更 28天写作 2月春节不断更

日记 2021年2月22日(周一)

Changing Lin

2月春节不断更

技术扫盲:关于低代码编程的可持续性交付设计和分析

小傅哥

Java 小傅哥 服务端 低代码开发 可持续交付

MySQL查看及杀掉链接方法大全

Simon

MySQL

区块链溯源系统开发,区块链应用底层平台搭建方案

WX13823153201

区块链溯源系统开发

还愁追不到女神吗?一键生成舔狗日记,一秒速成舔狗之王

不脱发的程序猿

程序人生 28天写作 二月春节不断更 舔狗文化

Kafka.04 - Kafka 部署

insight

kafka 2月春节不断更

详解SSH 框架中对象调用流程

华为云开发者社区

spring hibernate struts SSH 框架

私有云、公共云、混合云安全性的优点和缺点

浪潮云

云计算

Flink SQL 性能优化:multiple input 详解

Apache Flink

flink

1.1 Go语言从入门到精通:开发环境搭建

xcbeyond

go vscode 环境安装 28天写作 Go语言从入门到精通

WinDbg 分析高内存占用问题

圣杰

dotnet windbg

一文带你熟悉Pytorch->Caffe->om模型转换流程

华为云开发者社区

网络 模型 PyTorch caffe 算子边界

我与技术面试那些事儿

魔王哪吒

CSS html 前端 28天写作 2月春节不断更

超强前端面试真题+资源推荐

evantre

前端 面试题 面经

Dapr 知多少 | 分布式应用运行时

圣杰

架构 云原生 k8s dapr

测试InfoQ 平台发布文章

木子的昼夜

工作日志2-20

一锅水端平

我身边的高T,问了Java面试者这样的问题......

京东科技开发者

MySQL 数据库

先收藏!关于Java类、接口、枚举的知识点大汇总

华为云开发者社区

Java 接口 枚举

技术解析 | Doris SQL 原理解析

百度开发者中心

百度 Doris SQL优化

为什么不推荐使用汉字作为密码?

不脱发的程序猿

程序人生 密码学 28天写作 二月春节不断更

android开发需要学什么!最全面试考点与面试技巧,已拿offer附真题解析

欢喜学安卓

android 程序员 面试 移动开发

Apache Flink 在快手的过去、现在和未来

Apache Flink

flink

配合Github Actions 做一个自动推送的 Rss 订阅机器人

Leetao

Python RSS Github Action

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

设计和代码审查:是好、是坏还是不堪入目?-InfoQ