理解现有代码——代码考古
技术版本说明 本文涉及的示例代码基于 Java 17+、Spring Boot 3.x、Redis 7.x 编写。AI 工具相关操作基于 Claude Code v2.1 和 OpenCode v1.0+。五步法方法论本身与具体技术版本无关,可适用于任意语言和框架。
前置知识
- 具备至少 1 年的服务端开发经验,了解分层架构(Controller/Service/Repository)的基本概念
- 使用过至少一种 AI 编程工具(Claude Code、OpenCode、GitHub Copilot 等)
- 了解基本的设计模式(策略模式、工厂模式),不要求精通
适合谁读
- 需要接手同事代码或老项目的中高级开发者
- 希望在团队中推行 AI 辅助代码理解流程的技术管理者
- 刚加入新团队、需要快速建立代码认知的开发者
开发者花在"读代码"上的时间,远比"写代码"多。根据 IEEE Transactions on Software Engineering 发表的大规模实证研究(Xia et al., 2017),78 名专业开发者的数据显示,平均 58% 的工作时间花在代码理解活动上。后续多项研究进一步印证了这个区间——开发者阅读代码的时间占比在 58% 到 70% 之间。企业环境中这个比例更高,因为大量工作围绕着接手同事的项目、维护运行多年的老系统、排查线上问题展开。
传统模式下,理解一段陌生代码的流程是:翻目录结构、读 README、grep 关键字、打断点调试——这个过程可能需要数天甚至数周。AI 工具的介入能把这个过程压缩到小时级别。
本文要解决的问题是:如何用 AI 系统性地理解一段陌生代码? 核心方法是一套五步流程——从宏观架构到微观逻辑,层层深入。用一个优惠券系统的真实代码片段贯穿全文,让你看到每一步的具体操作。
一、代码考古的三个典型场景
"代码考古"不是学术概念,而是开发者日常面临的三类高频场景。
场景 1:接手同事的代码
最常见也最棘手。同事离职、调岗、或只是在忙别的项目,你被安排接手一个他写的模块。文档?没有。注释?几乎没有。单元测试?不一定有。
这种场景的难点不在于代码本身有多复杂,而在于隐式知识的缺失——为什么这里用了缓存?为什么那个接口要做重试?为什么数据库字段设计成这样?这些设计决策背后的理由,代码本身不会告诉你。
场景 2:排查线上问题
线上报了一个 Bug,你需要快速定位问题代码。日志指向某个模块,但这个模块已经迭代了几十个版本,你不确定当前逻辑是否和文档描述一致。
这种场景的难点是时间压力——线上问题每多存在一分钟,就多一分影响。你需要最快速度理解问题代码的上下文、调用链和数据流。
场景 3:接手老项目
公司收购了一个产品,或者你被调到一个运行了五年的项目组。整个项目的代码量可能有几十万行,涉及几十个微服务、上百个数据库表。
这种场景的难点是规模——代码量太大,无法逐行阅读,你需要一种系统性的方法来建立全局理解。
三个场景的共同点是:你面对的不是自己写的代码,理解成本远高于编写成本。AI 工具在这个过程中的价值,就是把"建立理解"的时间从天级别压缩到小时级别。
二、AI 辅助代码理解五步法
理解陌生代码不能漫无目的地浏览,需要一套结构化的方法。以下五步法从宏观到微观,逐步深入。
第一步:生成项目架构图
目标:建立全局认知。
在深入任何具体代码之前,先让 AI 帮你建立项目的整体认知。这就像到一个陌生的城市,先看地图再逛街道。
具体操作:把项目的目录结构交给 AI,让它分析项目的整体架构。
以优惠券系统为例,先看目录结构:
coupon-service/
├── src/
│ ├── controller/ # 接口层
│ ├── service/ # 业务逻辑层
│ ├── repository/ # 数据访问层
│ ├── model/ # 数据模型
│ ├── strategy/ # 优惠策略
│ ├── validator/ # 校验规则
│ ├── event/ # 事件处理
│ └── config/ # 配置
├── tests/
├── docs/
└── README.md
让 AI 分析这个结构,它会给出类似这样的架构理解:
这是一个典型的分层架构优惠券服务:
- Controller 层处理 HTTP 请求和参数校验
- Service 层承载核心业务逻辑
- Repository 层封装数据库操作
- Strategy 层实现了优惠计算策略模式
- Validator 层独立处理校验逻辑
- Event 层处理异步事件(发券、核销通知等)
关键技巧: 不要只给目录结构,同时把 README、配置文件(package.json 或 pom.xml)一起交给 AI。这些文件包含了项目的技术栈、依赖关系和运行方式等关键信息。
Claude Code 用户可以直接在项目根目录执行,AI 会自动读取目录结构和配置文件。OpenCode 用户可以通过粘贴目录树来获得同样的效果。
第二步:分析目标模块的代码结构
扫码添加企业微信,找大熊掌门开通会员

添加后说明想开通的会员类型即可