Refactoring

10 篇内容

工程实践知乎 - 腾讯技术工程

从胡言乱语到精准改代码:我是如何让 AI 读懂老项目的

文章以一个小程序教育平台的重构实践为例,系统阐述了如何通过AI上下文工程将历史债务沉重的项目转变为AI可维护的项目。核心路径包括:从AGENTS.md构建静态上下文索引,移除不再运行的死代码做减法,简化过度设计的架构(如将OT协同降级为HTTP同步),制定页面布局、组件与交互规范约束边界,搭建单测、E2E及视觉回归自动化测试流水线并嵌入MR检查,最终将债务治理融入日常迭代。文章详细记录了每一步中AI角色的变化与引导方法,展示了从AI频繁误判到能主导方案落地的过程,并指出关键在于持续沉淀可复用的上下文知识而非一次性建设。

本文提供了将AI嵌入遗留系统重构的完整案例,覆盖上下文建设、架构简化、规范制定和自动化质量门禁等环节,实操性强。文中拆解的步骤与AI引导策略可直接迁移至其他需要历史债务治理的工程场景,适合希望提升团队工程效能与AI融合度的开发者及技术管理者参考。

工程实践Simon Willison

Rewriting Bun in Rust

本文详述了Bun从Zig全面重写为Rust的过程,核心驱动是内存管理难题(如use-after-free、double-free)和崩溃导致的维护负担。作者借助Claude驱动的AI代理,利用TypeScript测试套件作为一致性验证,通过动态工作流、对抗性代码审查和流程修复机制,在11天内自动化完成了百万行代码的移植,并已平稳运行一个月。文章展示了代理工程在超大规模代码迁移中的完整工作流程,包括成本($165K API消耗)、质量保障和实际效果,也讨论了语言选择从单向决策变为可逆决策的范式转变,但强调该方法高度依赖高质量测试套件和大量模型输入。

推荐收录,因为该案例系统展示了利用前沿AI模型进行超大规模代码重写的完整实践,从动机、方案设计、自动化执行到质量控制和上线验证,证据链完整。尤其适合关注AI工程化、编程语言迁移、测试驱动开发或开源项目维护的读者,文中关于一致性套件驱动、流程修复而非手工修代码的理念具有很强的可迁移性,但需注意其成功依赖高质量测试资产和充足的模型交互预算。

工程实践美团技术团队

用Agent评测思路管理AI Coding —— 31万行代码AI重构的实践

本文复盘了一个在大规模 AI Coding 场景下,对 31 万行复杂业务系统进行渐进式重构的工程实践。作者提出用“Agent 评测”的思路管理 AI 编码:先通过团队共识完成“人人对齐”,再把规范固化为 AI Rule、Skill、Pre-PR 和多层审查机制,实现“人机对齐”,并在不停止业务交付的前提下,逐步消化技术债、重建分层架构和业务模型。文章还讨论了 AI 如何改变经验的价值边界,以及如何用 AI 辅助测试、Code Review 和跨模型互审来缓解 AI 提效后带来的下游瓶颈;其适用前提是团队已具备明确的工程治理意识和一致的架构标准。

推荐收录,因为这不是泛泛而谈的 AI 编程感想,而是把 AI Coding 纳入工程治理体系的一套可复用方法论,包含规范、评审、测试和重构的闭环设计。对正在经历 AI 产能上升、代码规模膨胀和技术债加速累积的团队尤其有参考价值。

工程实践知乎 - NGINX洪志道

重构是 AI 编程的基本功:从一次 nginx 实践说起

文章以 nginx 的 proxy HTTP/2 支持重构为例,讨论如何把一个承载请求状态、解析状态、stream 状态、connection 状态和控制帧临时状态的巨大 ctx 结构拆分为 frame_parse、stream、connection 与请求编排层。作者详细解释了为什么旧设计在单连接单请求时代“能工作”,却在 HTTP/2 单连接多请求和后续功能扩展下暴露出边界混乱、职责耦合和维护成本上升的问题。文章还给出了一套用 AI 辅助重构的实操方法:先明确边界,再按小步改动、逐步编译测试、查看 diff 并独立提交,借此把 AI 的执行力限制在正确的设计框架内。

推荐收录,因为它不是泛泛谈“AI 写代码”,而是基于真实 nginx 代码库展示了如何用重构重新整理核心抽象和模块边界。对做后端、基础设施或大型遗留代码维护的读者来说,文章提供了可迁移的拆分思路、变更节奏和验证方式。

工具笔记知乎 - NGINX洪志道

我如何用 AI 做真实编程

这篇文章记录了作者用 AI 辅助真实编程的一套实用方法,核心包括优先使用能力更强的大模型、用测试用例约束 AI 输出、频繁重构、以及通过“明确目标—拆小任务—让 AI 实现—自己理解 diff—写/跑测试—继续迭代”的循环推进开发。作者强调代码本身应当成为设计载体,而不是只依赖文档式 SPEC,同时认为真正有价值的经验来自在复杂、真实的任务中持续实践。

推荐收录,因为它给出了一套可直接迁移到日常开发中的 AI 编程工作流,而不是停留在抽象的“怎么问 AI”。其中关于测试、重构、理解 diff 和代码驱动的建议,对使用 AI 提升交付质量和保持代码可维护性都有长期参考价值。

学习路线知乎 - NGINX洪志道

03-应该自学什么

这篇文章讨论的是完成编程入门后的下一步该如何自学,核心建议是先继续巩固数组等基础数据结构,再通过经典书籍建立更长期的代码质量与软件设计意识。作者强调自学在编程中的重要性,并建议优先阅读《重构与模式》《敏捷软件开发》《领域驱动设计》,《深入理解计算机系统》可作为能力提升但非必读的补充。文章的边界也比较明确:它不是系统课程表,而是面向初学者的阶段性选书与学习方向建议。

推荐收录,因为它给出了入门之后很实用的自学顺序和阅读取舍,适合刚接触编程、正在从“会写语句”过渡到“会组织代码”的学习者。文章虽然简短,但对基础巩固、代码重构意识和长期自学心态的建议具有可迁移价值。

技术文章Go Blog

//go:fix inline and the source-level inliner

文章介绍 Go 1.26 新版 go fix 中的 source-level inliner:它把函数调用按源代码层面展开,并通过 //go:fix inline 指令,让库作者为旧 API、重命名接口和类型/常量迁移提供“自助式”现代化方案。文中以 ioutil.ReadFile 迁移到 os.ReadFile、oldmath 包重构为例,说明 go fix 与 gopls 如何自动提示并批量改写调用点。作者进一步剖析了实现难点:参数消除、求值副作用顺序、可能在编译期失败的常量表达式、名字遮蔽、未使用变量以及 defer 作用域。文章强调该工具追求的是“可证明不改变语义”的整洁改写,因此在批处理场景会比人类更保守,甚至拒绝某些需要函数字面量包裹的情况。

文中直接展示了 //go:fix inline 的迁移用法,并系统解释了源级内联器如何处理语义边界,是理解 Go 代码改写与编译器式重构工具的可靠材料。适合做语言工具、重构引擎或 API 迁移方案的参考,但也要注意它在副作用和 defer 等场景下会刻意保守。

工具笔记Go Blog

Using go fix to modernize Go code

本文介绍 Go 1.26 中重写后的 go fix:它可按包模式批量应用现代化修复,支持 -diff 预览、按分析器选择性启用,并会跳过生成文件与不匹配的构建配置。作者用 minmax、rangeint、stringscut 和 newexpr 等例子说明,go fix 不只是修 bug,更是在把旧写法迁移到更新的语言/标准库习惯上,甚至能跨包替换“new-like”辅助函数。文章进一步解释了 go vet 与 go fix 统一到 Go analysis framework 后的架构:分析器、驱动、事实传递、gopls/staticcheck 等复用同一套基础设施。它也强调多次运行可产生协同修复,但仍可能出现语义冲突、未使用变量或需要手工处理的边界。最后提出“self-service”静态分析设想,希望未来能让第三方 API 和组织规则也像标准库现代化一样自动推广。

推荐收录,因为文章直接给出了 go fix 的使用方式、分析器机制和典型修复案例,证据充分且不是产品宣传。适合 Go 开发者、工具链维护者和静态分析作者阅读,其中关于批量重构、安全修复与分析框架复用的经验具有较强迁移价值。

工程实践Blender Developers Blog

Winter of Quality 2026

这篇文章回顾了 Blender 在 2025—2026 冬季进行的“质量季”工作,重点不是新功能,而是围绕稳定性、缺陷修复、测试补强和技术债清理展开。两个月内修复了 350+ 个用户报告的问题,并按动画、建模、节点、渲染、界面、视口等模块给出分布,说明质量投入是按子系统推进的。正文还列出多项结构性工作,例如将代码从旧式 C 接口迁移到更现代的 C++ 风格、补充自动化测试、优化性能、完善文档,以及完成 Mesh 属性存储格式切换等。文章也展示了缺陷分流和 triage 的进展,未分配问题显著下降,说明质量治理不仅是修 bug,也包括流程改进。其边界在于这是项目回顾而非深入技术复盘,很多条目只给出结果和方向,缺少实现细节与量化对比,但仍适合作为开源大型工程做稳定性治理的参考案例。

推荐收录,因为它明确给出了 350+ 缺陷修复、自动化测试补强、代码现代化和 triage 流程改进等直接证据,体现了大型开源项目如何系统性提升质量。适合做开源维护、稳定性治理和技术债清理的参考,但读者需注意它偏项目总结,细节深度有限。

工程实践Instacart Tech Blog

Migrating to Jetpack Compose

文章复盘了 Instacart Caper 智能购物车 Android 应用从 Fragments/XML 迁移到 Jetpack Compose 的全过程。作者将迁移拆成四阶段:先用隐式 Fragment host 承接 Compose 页面,再把导航图迁到 Kotlin DSL 与类型安全路由,随后把存量 Fragment 逐步改造成纯 Compose,最后切换到 Compose Navigation。文中最有价值的部分是 AI 辅助重构方法:通过 Git 历史提供上下文、实时纠错、持续更新迁移指南,并把 17 步流程固化为 AI skill。作者给出了 5–7 倍提速、节省约 300–350 工时的结果,但也强调在高风险硬件场景中必须保留截图对比、测试和人工验证。整体结论是:AI 适合重复性强、边界清晰的大规模现代化改造,但前提是先定义好架构目标、约定和检查点。

收录价值明确:文章不仅描述了 Compose 迁移路径,还给出可复用的 AI 辅助重构工作流、检查点和度量结果,属于可迁移的工程经验。适合做 Android 现代化、存量代码重构和 AI 提效实践的参考,但读者需要注意其前提是明确的迁移规范与严格的人为验证。