三轮自动代码评审,质量持续收敛
发布于 2026-06-13
131
版权声明
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
麦哲思科技任甲林
扫码关注公众号
扫码阅读
手机扫码阅读
文章主旨: 通过一个实际项目的迭代修复过程,论证了代码评审(尤其是多轮结构化评审)是质量收敛的有效方法,强调“评审—修复—再评审”闭环的价值,以及后置四区评审方法论在发现深层和次生问题方面的优势。
关键要点:
- 多轮评审(三轮)能逐步收敛严重问题(3→1→0),建议问题(3→2→0),信息项(2→3→1)。
- 第一轮评审发现架构级问题(公共模块缺失、CDN降级、重复文件读取);第二轮发现修复引入的细节问题(null处理、副作用位置、残留代码);第三轮收敛到零。
- 后置四区评审框架(区内逻辑、输出侧影响、输入侧依赖、共享状态)比传统diff审查更能捕捉变更的涟漪效应。
- “修复即引入”是常态,需要将评审作为迭代闭环来应对。
内容结构:
- 背景:Bug修复与架构决策失误
- 原始问题:Word预览失败、Excel加载失败、行距过大、含大量表格的Word崩溃。
- 根因:后端用python-docx解析文档并传递纯文本到前端,丢失样式并容易崩溃。
- 修复方案:将文档渲染移到浏览器端(mammoth.js / marked.js),后端仅负责文件存储和API。
- 涉及4个文件:两个前端页面、一个后端接口、一个新公共模块。
- 第一轮评审:架构层面的深层问题
- 发现3个严重问题:公共模块缺失(escapeHtml和renderFileContent在两个页面中重复定义)、CDN无降级、重复文件读取。
- 评审结论:不通过,需修复严重问题。
- 第一轮修复
- 抽取公共模块 file-preview-renderer.js。
- CDN降级机制:catch中实现双层fallback。
- 修复重复读取:支持preloadedText参数。
- 标记废弃API。
- 第二轮评审:修复后的新问题
- 发现1个严重(escapeHtml(null)渲染为"null")和2个建议(marked.setOptions重复调用、markdown-renderer.js仍有重复escapeHtml)。
- 评审结论:有条件通过(需修严重)。
- 观察:修复本身会引入次生问题,但评审能像剥洋葱一样层层深入。
- 第二轮修复
- escapeHtml添加null防护。
- marked.setOptions移到模块顶层并加守卫。
- 删除markdown-renderer.js中的重复escapeHtml。
- 补充learn.html对该模块的引用(连锁反应)。
- 第三轮评审:收敛到零
- 严重、建议均为0,信息项1个(其他页面遗留的inline escapeHtml,属于既有技术债务)。
- 结论:通过。
- 核心洞察
- 一次评审不够,两次才收敛 —— 注意力先大后小。
- "修复即引入"是常态,闭环应对。
- 后置四区评审追问输出侧、共享状态等,能发现diff看不到的问题。
- 方法论比工具更重要,结构化checklist能触发深度思考。
- 结语
- 代码评审应迭代收敛,三轮从3个严重到零缺陷。
- 建议:修完一轮后别急着合并,再评一轮。
文章总结: 本文通过一个真实项目的实践案例,展示了多轮结构化代码评审(后置四区评审)如何系统性地发现并修复问题,最终实现质量收敛,强调了迭代评审和追问涟漪效应的有效性。
麦哲思科技任甲林
麦哲思科技任甲林
扫码关注公众号
没有了
上一篇
Harness 成熟度模型(HMM)
下一篇
麦哲思科技(北京)有限公司总经理 敏捷性能合弄模型评估师 认证的Scrum Master 认证的大规模敏捷顾问SPC CMMI高成熟度主任评估师 COSMIC MPC,IAC 成员,中国分部主席
471 篇文章
浏览 904.9K
还在用多套工具管项目?
一个平台搞定产品、项目、质量与效能,告别整合之苦,实现全流程闭环。
查看方案
麦哲思科技任甲林的其他文章
快速学习COSMIC方法之八:如何识别功能处理
在上一讲中我们讨论了对功能处理概念的理解,那是我们识别功能处理的基础。本节我们将继续讲解如何识别功能处理。在度量手册中,对识别功能处理给出了如下的规则:a) 一个功能处理应该完全属于某层且仅属于某一层的一个软件块的度量范围。b) 一个功能处理至少包含两个数据移动,一个输入加上一个输出或写。一个功能处理中数据移动的数量没有上限。c) 一个执行中的功能处理,当其响应了触发输入并满足FUR时
快速学习COSMIC方法之十四:嵌入式软件功能点识别案例
前面的几讲,我们讲完了如何计算功能点的方法,接下来我们看一个完整的案例。这是COSMIC官方网站上曾经发布的一个嵌入式软件的案例,有多个版本,我们改编自其中一个版本来讨论一下。 需求描述如下: 1. 电饭煲可以有3种模式煮饭:快,正常,慢。可以由人来手动设置,设置后直接记录在RAM中,不需要通过软件来存储。 2. 当按下START按钮后,启动定时器,开始煮饭。 3. ...
AI自动生成代码了,度量功能点还有意义吗?
用户可能说“做个电商系统”,但“母婴用品垂直电商”和“全品类电商平台”的功能点规模完全不同——前者需要“育儿知识社区”“母婴用品专属筛选”等功能点,后者需要“多商家入驻”“全品类分类”等功能点,两者的价值差异,正是通过功能点来量化的。无论是项目预算的编制、合同价格的敲定,还是成本的管控,都需要一个明确的基准——功能点,它能精准量化业务需求的体量,让“多少钱办多少事”有章可循,避免因需求模糊导致的报价混乱、预算超支。如果说传统时代,功能点是“有用的工具”,那么AI时代,功能点就是“不可或缺的标尺”。
CMMI4级实践问题30问-1
第1问:应该建立哪些组织级的性能基线? 答: (1) 由商务目标派生出基线需求 组织级的产品质量与过程性能目标是什么?这些目标可以通过哪些度量元来刻画?哪些因素影响了目标的达成?这些因素可以通过哪些度量元来刻画?这些度量元是否可以建立基线? (2) 建立力所能及的基线 需要建立基线,但是却无历史数据,或者收集基线数据的成本很高,也就只能放弃,需要等到时机成熟了才
给程序员的18个忠告
1 想清楚,写清楚,说清楚,才是真正的清楚!2 多花点时间沟通清楚需求,才能把握正确方向!3 修复需求错误的成本是代码错误的几十倍!4 程序员最大的坏习惯就是:急于动手写代码! 5 提高开发效率的捷径:一次做对,不返工!6 写代码之前三件事: 弄清楚做什么; 说清楚怎么做; 想清楚怎么测!7 职业的程序员设计程序,业余的程序员调试程序;8 拷贝粘贴式的作业方式,最容易导入b
加入社区微信群
与行业大咖零距离交流学习
PMO实践白皮书
白皮书上线
白皮书上线