代码生成、调试与重构实战
结对编程的价值不在于写代码更快——而在于多一双眼睛,及早发现你的盲区。Claude Code 就是那双眼睛。
开发提效工作流
实战代码生成框架
"""
Claude Code 开发任务规范化框架
演示如何结构化地向 Claude Code 表达开发需求
"""
from dataclasses import dataclass, field
from enum import Enum
class TaskType(Enum):
FEATURE = "功能开发"
BUGFIX = "Bug修复"
REFACTOR = "代码重构"
TEST = "测试编写"
DOCS = "文档生成"
@dataclass
class DevTask:
"""开发任务描述(结构化提示词基础)"""
task_type: TaskType
title: str
context: str # 现有代码/功能的背景
requirement: str # 具体要求
constraints: list[str] # 约束条件(语言版本/风格/性能)
acceptance_criteria: list[str] # 验收标准
files_involved: list[str] = field(default_factory=list)
def to_prompt(self) -> str:
"""转换为 Claude Code 提示词"""
lines = [
f"任务类型: {self.task_type.value}",
f"任务: {self.title}",
"",
f"背景:\n{self.context}",
"",
f"要求:\n{self.requirement}",
"",
]
if self.files_involved:
lines.append(f"相关文件: {', '.join(self.files_involved)}")
lines.append("")
if self.constraints:
lines.append("约束条件:")
for c in self.constraints:
lines.append(f" - {c}")
lines.append("")
if self.acceptance_criteria:
lines.append("验收标准(完成后请自行验证):")
for ac in self.acceptance_criteria:
lines.append(f" - {ac}")
return "\n".join(lines)
class DebugAssistant:
"""调试辅助工具:生成调试提示词"""
@staticmethod
def error_analysis_prompt(
error_message: str,
stack_trace: str,
code_snippet: str,
environment: str,
) -> str:
return f"""分析以下错误,给出诊断和修复方案:
**错误信息:**
{error_message}
**堆栈追踪:**
{stack_trace}
**相关代码:**
```python
{code_snippet}
运行环境: {environment}
请按以下格式输出: 1. 根本原因(一句话) 2. 详细分析(为什么会出现这个错误) 3. 修复方案(代码) 4. 预防措施(如何避免类似问题)"""
@staticmethod
def performance_analysis_prompt(
slow_function: str,
current_performance: str,
target_performance: str,
) -> str:
return f"""分析并优化这个性能瓶颈:
当前代码:
{slow_function}
当前性能: {current_performance} 优化目标: {target_performance}
请提供: 1. 性能瓶颈识别(具体指出慢在哪里) 2. 优化后代码(附时间复杂度分析) 3. 权衡说明(可读性 vs 性能的取舍) 4. 验证方法(如何用 cProfile 或 timeit 验证效果)"""
class RefactorGuide: """重构指南:常见重构场景的提示词"""
SCENARIOS = {
"消除重复代码": """
在 $files 中识别重复的代码模式,并进行以下重构: 1. 提取公共函数/类,放入 $target_location 2. 更新所有调用点 3. 确保行为完全一致(不要改变功能) 4. 运行测试验证重构正确性 重构后展示前后对比,说明减少了多少重复。""",
"函数拆分": """
将 $function_name 函数拆分,使每个函数只做一件事。 原则: - 每个新函数不超过 20 行 - 函数名能清楚表达它做什么 - 保持对外接口不变($function_name 仍然可以调用) 展示拆分后的结构,并解释拆分逻辑。""",
"类型注解": """
为 $module_name 模块的所有公开函数添加类型注解: - 使用 Python 3.10+ 的类型语法(X | Y 而非 Union) - 对复杂返回类型使用 TypedDict 或 dataclass - 为可能为 None 的参数加 Optional 或 X | None - 不修改任何业务逻辑 运行 mypy 验证注解正确性。""",
"异步化": """
将 $function_name 从同步改为异步实现: - 使用 async/await 语法 - 对 I/O 操作使用 asyncio(HTTP 用 aiohttp,DB 用 asyncpg) - 更新所有调用这个函数的地方 - 保持错误处理行为一致 展示性能对比(并发 N 个请求的时间差异)。""", }
@classmethod
def get_prompt(cls, scenario: str, **kwargs) -> str:
template = cls.SCENARIOS.get(scenario, "")
for key, value in kwargs.items():
template = template.replace(f"${key}", value)
return template
演示:实际开发场景
print("=== 开发任务 → Claude Code 提示词示例 ===\n")
task = DevTask( task_type=TaskType.FEATURE, title="用户密码重置 API", context="FastAPI 项目,使用 SQLAlchemy + PostgreSQL,已有 /auth/login 和 /auth/register 端点", requirement="实现 /auth/reset-password 端点:接收邮箱 → 发送重置链接 → 验证 token → 更新密码", constraints=[ "Python 3.12, FastAPI 0.104+", "token 有效期 1 小时,使用 JWT", "遵循现有的 APIRouter 结构和错误处理模式", "写单元测试,覆盖率 > 80%", ], acceptance_criteria=[ "POST /auth/reset-password/request 发送邮件并返回 200", "POST /auth/reset-password/confirm 验证 token 并更新密码", "过期 token 返回 401", "无效邮箱返回 404", "测试全部通过", ], files_involved=["app/auth/router.py", "app/auth/schemas.py", "app/models/user.py"], )
print(task.to_prompt())
print("\n=== 调试提示词示例 ===\n") debug = DebugAssistant() prompt = debug.error_analysis_prompt( "AttributeError: 'NoneType' object has no attribute 'email'", " File 'auth/router.py', line 45, in reset_password\n user.email", "user = db.query(User).filter(User.id == user_id).first()\nreturn user.email", "Python 3.12, FastAPI, PostgreSQL", ) print(prompt[:400] + "...") ```
Claude Code vs 传统开发方式
| 场景 | 传统方式 | Claude Code 方式 | 时间节省 |
|---|---|---|---|
| 新功能实现 | 写代码 → 调试 → 测试 | 描述需求 → 审查代码 → 调整 | 40-60% |
| Bug 调试 | 读日志 → 猜原因 → 试修复 | 粘贴错误 → Claude 诊断 → 修复 | 50-70% |
| 代码重构 | 手动识别重复 → 逐处修改 | 描述重构目标 → 批量执行 | 60-80% |
| 测试编写 | 想测试用例 → 写代码 | 给函数 → 生成覆盖性测试 | 50-65% |
| 代码文档 | 逐函数手写 | 批量生成 → 人工审核 | 70-80% |
行动清单
- [ ] 选一个当前项目的真实功能需求,用 DevTask 结构化描述后交给 Claude Code 实现
- [ ] 找一个最近遇到的 Bug,把错误信息 + 堆栈 + 代码直接粘贴给 Claude,不要先解释你的猜测
- [ ] 识别项目中最乱的一个文件,用"消除重复代码"重构场景提示词让 Claude 清理
- [ ] 重构后立即运行测试套件:Claude 的重构可能改变行为,测试是唯一可靠的验证
- [ ] 对每次 Claude 生成的代码做代码审查:把它当成初级工程师的代码,你负责 review
- [ ] 建立团队约定:Claude Code 生成的代码必须有人 review 才能合并,避免盲目信任
下一节:03-MCP工具集成与Skills工作流 — 连接外部工具,让 Claude Code 的能力突破终端边界。