T13 优化与维护 ⭐⭐⭐ ⏱ 约 45 分钟

遗留代码理解

Legacy Code Understanding

💡 适用场景: 知识转移、技术债清理

📄 T13: Legacy Code Understanding(遗留代码理解) 其他

⭐⭐⭐ 中级 | 快速理解和改进已有的代码库

💡 核心概念 核心概念

遗留代码的挑战:

  • 缺乏文档
  • 代码质量差(可能有多个开发者)
  • 没有或很少有测试
  • 依赖不清晰
  • 技术债务累积

理解遗留代码的步骤:

  1. 快速了解 - 整体架构和流程
  2. 深入分析 - 关键模块和数据流
  3. 测试覆盖 - 添加测试确保理解正确
  4. 文档补全 - 记录发现
  5. 逐步改进 - 小范围重构和优化

最佳实践 最佳实践

🎯 原则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模块)

请生成完整的文档。

📄 遗留代码改进顺序 其他

优先级排序:

  1. 最容易 - 添加注释、整理格式
  2. 高收益 - 去重代码、提取方法
  3. 降技债 - 升级依赖、消除警告
  4. 优化 - 性能改进、可读性提升
  5. 重构 - 大规模结构调整(谨慎)

📋 遗留代码改进检查清单 检查清单

📄 🎓 下一步 其他

  • 理解后需要改进 → 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模块)

请生成完整的文档。