T13
优化与维护
⭐⭐⭐
⏱ 约 45 分钟
遗留代码理解
Legacy Code Understanding
💡 适用场景: 知识转移、技术债清理
📄 T13: Legacy Code Understanding(遗留代码理解) 其他
⭐⭐⭐ 中级 | 快速理解和改进已有的代码库
💡 核心概念 核心概念
遗留代码的挑战:
- 缺乏文档
- 代码质量差(可能有多个开发者)
- 没有或很少有测试
- 依赖不清晰
- 技术债务累积
理解遗留代码的步骤:
- 快速了解 - 整体架构和流程
- 深入分析 - 关键模块和数据流
- 测试覆盖 - 添加测试确保理解正确
- 文档补全 - 记录发现
- 逐步改进 - 小范围重构和优化
✅ 最佳实践 最佳实践
🎯 原则1: 先理解再改变
- 不要急着改代码
- 先搞明白为什么这样做
- 可能有深层的业务原因
🎯 原则2: 测试驱动理解
- 通过写测试来验证理解
- 测试代码就是文档
- 测试覆盖保证改动安全
🎯 原则3: 逐步改进
- 不要一次性重写
- 小步快走,每步都可测试
- 先改最容易、收益最大的部分
🎯 原则4: 知识转移
- 将隐性知识显性化
- 写文档或注释
- 分享给团队其他人
📄 遗留代码理解场景 其他
场景1: 快速理解新模块
Prompt:
我需要快速理解这个新接手的模块。
模块:[模块名称]
功能:[模块的主要功能]
代码结构:
[粘贴目录结构或关键文件列表]
问题:
1. 这个模块的核心流程是什么?
2. 主要的类/函数有哪些?
3. 数据怎样流动的?
4. 依赖关系是什么?
5. 应该从哪里开始理解?
请给出:
1. 模块概览(5分钟快速了解)
2. 核心流程图
3. 关键组件说明
4. 建议先读的文件
场景2: 寻找bug所在的代码
Prompt:
用户报告[功能]有bug,但我不清楚代码在哪里。
bug现象:[现象描述]
代码库结构:
[描述代码库如何组织的]
可能相关的文件:
[列出可能相关的文件或模块]
问题:
1. 这个功能的代码最可能在哪里?
2. 应该追踪哪个函数的调用链?
3. 怎样快速定位问题所在?
请帮我追踪bug的位置。
场景3: 添加测试改进覆盖
Prompt:
这个遗留模块没有测试,我想添加测试来理解和保护它。
模块代码:
[主要的业务逻辑代码]
问题:
1. 这段代码的核心功能是什么?
2. 主要的输入输出是什么?
3. 应该添加什么样的测试?
4. 边界情况有哪些?
请帮我:
1. 设计测试用例
2. 提供测试代码框架
3. 指出应该重点测试的部分
场景4: 文档补全
Prompt:
这个没有文档的模块需要补充说明。
模块功能:[功能说明]
代码:
[核心代码]
需要生成:
1. 模块说明文档(英文说明、用途、使用方式)
2. 关键函数的docstring
3. 配置说明(如果有)
4. API文档(如果是API模块)
请生成完整的文档。
📄 遗留代码改进顺序 其他
优先级排序:
- 最容易 - 添加注释、整理格式
- 高收益 - 去重代码、提取方法
- 降技债 - 升级依赖、消除警告
- 优化 - 性能改进、可读性提升
- 重构 - 大规模结构调整(谨慎)
📋 遗留代码改进检查清单 检查清单
📄 🎓 下一步 其他
- 理解后需要改进 → T04: Refactoring
- 需要添加测试 → T05: Unit Testing
- 理解的知识需要记录 → T14: Documentation
💬 Prompt 模板 (4)
遗留代码理解 - Prompt 1
我需要快速理解这个新接手的模块。
模块:[模块名称]
功能:[模块的主要功能]
代码结构:
[粘贴目录结构或关键文件列表]
问题:
1. 这个模块的核心流程是什么?
2. 主要的类/函数有哪些?
3. 数据怎样流动的?
4. 依赖关系是什么?
5. 应该从哪里开始理解?
请给出:
1. 模块概览(5分钟快速了解)
2. 核心流程图
3. 关键组件说明
4. 建议先读的文件
遗留代码理解 - Prompt 2
用户报告[功能]有bug,但我不清楚代码在哪里。
bug现象:[现象描述]
代码库结构:
[描述代码库如何组织的]
可能相关的文件:
[列出可能相关的文件或模块]
问题:
1. 这个功能的代码最可能在哪里?
2. 应该追踪哪个函数的调用链?
3. 怎样快速定位问题所在?
请帮我追踪bug的位置。
遗留代码理解 - Prompt 3
这个遗留模块没有测试,我想添加测试来理解和保护它。
模块代码:
[主要的业务逻辑代码]
问题:
1. 这段代码的核心功能是什么?
2. 主要的输入输出是什么?
3. 应该添加什么样的测试?
4. 边界情况有哪些?
请帮我:
1. 设计测试用例
2. 提供测试代码框架
3. 指出应该重点测试的部分
遗留代码理解 - Prompt 4
这个没有文档的模块需要补充说明。
模块功能:[功能说明]
代码:
[核心代码]
需要生成:
1. 模块说明文档(英文说明、用途、使用方式)
2. 关键函数的docstring
3. 配置说明(如果有)
4. API文档(如果是API模块)
请生成完整的文档。