PCon全球产品创新大会(北京站)来啦~了解最新日程 了解详情
写点什么

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

  • 2008 年 3 月 10 日
  • 本文字数:976 字

    阅读完需:约 3 分钟

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

关注

评论

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

【Flutter 专题】93 图解 Dart 单线程实现异步处理之 Isolate (二)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

Pandas高级教程之:统计方法

程序那些事

Python 数据分析 pandas 程序那些事

Swarm节点系统开发|Swarm节点APP软件开发

多媒体技术(一)之图形图像

轻口味

android 音视频 计算机图形学 图形图像处理

FIL挖矿怎么样?FIL挖矿靠谱吗?

如何用EasyRecovery 快速找回误删的截图

淋雨

EasyRecovery 文件恢复 硬盘数据恢复 固态硬盘数据恢复

Vchat挖矿软件开发|Vchat挖矿系统APP开发

认证笔记 神策数据 SA分析师认证

万里无云万里天

神策数据 SA分析师认证

打造中国数字军人 数军科技携黑科技亮相军博会

科技热闻

如何利用极狐GitLab CI提高生产力?

极狐GitLab

ci

小马哥的Java项目训练营-毕业总结

姑射仙人

研发管理和项目管理有哪些痛点?

万事ONES

研发管理 ONES 项目管理工具

互联网公司的「敏捷开发」流程是怎么样的?每个职位的角色和分工是什么?

万事ONES

union 分页/group/join 复杂查询(.net core/framework)

Spook

sql ORM

无意中发现一个好用的前后端代码生成网

江湖一点雨

mybatis java代码 自动生成 vue自动生成 sql转实体

【LeetCode】和相同的二元子数组Java题解

HQ数字卡

算法 LeetCode 7月日更

云图说|华为HiLens云上管理平台,花样管理多种端侧设备

华为云开发者社区

华为云 云图说 AI开发 华为HiLens EI智能体

高级码农设计的程序能解耦,是多么重要的一件事情!

小傅哥

spring 设计模式 小傅哥 观察者模式 系统解耦

DGTT挖矿智能合约系统软件开发案例

计算机时间到底是怎么来的?程序员必看的时间知识!

Kaito

操作系统 计算机基础 时间 ntp

萌宠大陆APP开发|萌宠大陆系统软件开发

Redisson 分布式锁源码 06:公平锁排队加锁

程序员小航

Java redis 分布式锁 redisson

领哆哆APP开发|领哆哆软件系统开发

HVC矿机系统开发|HVC矿机软件APP开发

TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?

小林coding

计算机网络 HTTP TCP/IP

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

火山引擎开发者社区

云原生 后端 Service Mesh 服务网格

《大数据大创新:阿里巴巴云上数据中台之道》:解密阿里数据中台建设

云祁

大数据 读书笔记 数据中台 7月日更

不藏了,这些Java反射用法总结都告诉你们

华为云开发者社区

Java JVM 反射 java框架 MyBase

DolphinDB插件开发深度解析

DolphinDB

数据库 时序数据库 插件开发 DolphinDB 大数据分析

我给我讲GIT,并成功把我得罪了

加百利

git 7月日更

并发王者课-铂金9:互通有无-Exchanger如何完成线程间的数据交换

MetaThoughts

Java 多线程 并发

TDSQL前沿技术进展和趋势——数据异常基础理论研究

TDSQL前沿技术进展和趋势——数据异常基础理论研究

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