第 11 章:改代码
龙虾学堂2026年3月23日
学会让 AI 修改和优化现有代码
第 11 章:改代码 ⭐
本章解决什么问题:学会让 AI 修改和优化现有代码
学习目标:能够用自然语言让 AI 重构代码、优化性能、修复 bug
版本基准:OpenClaw 3.13 前置条件:已完成第 10 章(写代码)
📋 实测验证说明:本章所有代码修改示例均经过实测验证,确保代码可正确运行。
11.1 让 AI 修改代码
让 AI 帮你修改现有代码,改进写法或转换语言。
基本用法
发送代码给 AI:
把这段 Python 代码改成 TypeScript:
def add(a, b):
return a + b
AI 回复(实测):
好的,已转换为 TypeScript:
```typescript
function add(a: number, b: number): number {
return a + b;
}
已添加类型注解,函数接受两个 number 参数,返回 number 类型。
> **🔍 实测说明**:实测时间 2026-03-20,AI 理解代码并进行语言转换
> **💡 新手建议**:发送代码时可以用代码块包裹,AI 会更好地理解。
---
## 11.2 不同场景的代码修改
### 场景一:优化性能
**发送**:
优化这段代码的性能:
def find_duplicates(numbers):
duplicates = []
for i in range(len(numbers)):
for j in range(i + 1, len(numbers)):
if numbers[i] == numbers[j]:
duplicates.append(numbers[i])
return duplicates
**AI 回复**(实测):
好的,优化后的代码:
def find_duplicates(numbers):
seen = set()
duplicates = set()
for num in numbers:
if num in seen:
duplicates.add(num)
else:
seen.add(num)
return list(duplicates)
优化说明:
| 优化项 | 原代码 | 优化后 |
|---|---|---|
| 时间复杂度 | O(n²) | O(n) |
| 空间复杂度 | O(1) | O(n) |
| 方法 | 双重循环 | 哈希集合 |
性能提升:对于大数据集,性能提升显著(1000 个元素时约快 100 倍)。
### 场景二:修复 Bug
**发送**:
修复这段代码的 bug:
def divide(a, b):
return a / b
**AI 回复**(实测):
好的,修复后的代码:
def divide(a, b):
if b == 0:
raise ValueError("除数不能为零")
return a / b
修复说明:
原问题:当 b 为 0 时会抛出 ZeroDivisionError
修复方案:添加除零检查,抛出更有意义的 ValueError
建议:可以添加类型注解和文档字符串,让代码更清晰。
### 场景三:添加功能
**发送**:
给这个计算器类添加乘方和开方功能:
class Calculator:
def add(self, a, b):
return a + b
def subtract(self, a, b):
return a - b
**AI 回复**(实测):
好的,已添加乘方和开方功能:
import math
class Calculator:
def add(self, a, b):
return a + b
def subtract(self, a, b):
return a - b
def power(self, base, exponent):
"""计算乘方"""
return base ** exponent
def sqrt(self, n):
"""计算平方根"""
if n < 0:
raise ValueError("不能对负数开平方")
return math.sqrt(n)
新增功能:
power(base, exponent):计算 base 的 exponent 次方sqrt(n):计算 n 的平方根(负数会抛出异常)
使用示例:
calc = Calculator()
print(calc.power(2, 3)) # 8
print(calc.sqrt(16)) # 4.0
### 场景四:重构代码结构
**发送**:
重构这段代码,让它更易于维护:
def process_data(data):
result = []
for item in data:
if item > 0:
result.append(item * 2)
return result
**AI 回复**(实测):
好的,重构后的代码:
from typing import List
def filter_positive_numbers(numbers: List[int]) -> List[int]:
"""过滤出正数"""
return [n for n in numbers if n > 0]
def double_numbers(numbers: List[int]) -> List[int]:
"""将所有数字翻倍"""
return [n * 2 for n in numbers]
def process_data(data: List[int]) -> List[int]:
"""
处理数据:过滤正数并翻倍
Args:
data: 整数列表
Returns:
处理后的列表
"""
positive = filter_positive_numbers(data)
return double_numbers(positive)
重构说明:
- 拆分函数:将单一函数拆分为多个小函数
- 添加类型注解:明确输入输出类型
- 添加文档字符串:说明每个函数的作用
- 使用列表推导式:代码更简洁
好处:
- 每个函数职责单一
- 更容易测试
- 代码可读性更好
---
## 11.3 高级用法
### 修改文件中的代码
**发送**:
打开 calculator.py,把 add 函数改成支持多个参数
**AI 回复**(实测):
好的,修改 calculator.py 文件:
原代码:
def add(self, a, b):
return a + b
修改后:
def add(self, *args):
"""支持多个参数相加"""
if len(args) < 2:
raise ValueError("至少需要两个参数")
return sum(args)
✅ 文件已更新。
使用示例:
calc = Calculator()
print(calc.add(1, 2, 3, 4, 5)) # 15
### 批量修改代码风格
**发送**:
把这个文件的所有函数都添加类型注解和文档字符串
**AI 回复**(实测):
好的,批量添加类型注解和文档字符串:
修改内容:
add(a, b)→add(a: int, b: int) -> intsubtract(a, b)→subtract(a: int, b: int) -> intmultiply(a, b)→multiply(a: int, b: int) -> intdivide(a, b)→divide(a: int, b: int) -> float
每个函数都添加了:
- 参数类型注解
- 返回值类型注解
- 文档字符串(说明功能、参数、返回值)
✅ 文件已更新。
### 代码转换(语言间)
**发送**:
把这个 Python 脚本转换成 Node.js:
import os
def list_files(directory):
return os.listdir(directory)
**AI 回复**(实测):
好的,已转换为 Node.js:
const fs = require('fs');
function listFiles(directory) {
return fs.readdirSync(directory);
}
// 使用示例
const files = listFiles('.');
console.log(files);
转换说明:
os.listdir()→fs.readdirSync()- Python 列表 → JavaScript 数组
- 添加了使用示例
---
## 11.4 练习时间
### 练习 1:优化代码
**发送**:
优化这段代码的性能:
def sum_squares(n):
total = 0
for i in range(n):
total += i * i
return total
观察 AI 如何优化代码。
### 练习 2:修复 Bug
**发送**:
修复这段代码的 bug:
def get_first_item(items):
return items[0]
练习让 AI 发现并修复边界问题。
### 练习 3:添加功能
**发送**:
给这个类添加一个排序方法
练习让 AI 扩展现有代码。
---
## 11.5 常见问题
### Q1:AI 能理解复杂的代码吗?
**说明**:
- 可以理解大多数常见代码
- 复杂业务逻辑可能需要解释
- 建议分段发送长代码
### Q2:AI 修改的代码安全吗?
**说明**:
- AI 会尽量保持原有逻辑
- 但建议 review 后再使用
- 重要代码需要人工验证
### Q3:AI 能帮我写单元测试吗?
**说明**:
- 可以编写单元测试
- 覆盖常见场景
- 但边缘情况需要人工补充
### Q4:AI 能理解我的项目结构吗?
**说明**:
- 可以读取项目文件
- 理解模块关系
- 但复杂依赖可能需要说明
---
## ✅ 你已解锁能力
| 能力 | 状态 |
|------|------|
| 让 AI 优化代码性能 | ✅ 已掌握 |
| 让 AI 修复 Bug | ✅ 已掌握 |
| 让 AI 添加功能 | ✅ 已掌握 |
| 让 AI 重构代码 | ✅ 已掌握 |
---
## 📊 自测题(3 题)
### 1. 如何让 AI 优化代码性能?
**答案**:发送代码并说"优化这段代码的性能"
### 2. 如何让 AI 修复代码中的 Bug?
**答案**:发送代码并说"修复这段代码的 bug"
### 3. 如何让 AI 批量修改代码风格?
**答案**:说明修改要求,如"给所有函数添加类型注解和文档字符串"
---
## 🎯 下一章预告
第 12 章:调试代码
你将学会:
- 让 AI 分析错误信息
- 让 AI 定位问题
- 让 AI 提供修复建议
**提前试试**:
这个错误怎么修复?(发送错误信息)
> 本文由郭峰主导,基于 GPT-5.4、OpenClaw Agent 完成,并经人工审校定稿。
---
> **课后练习**(可选)
> 1. 发送一段代码让 AI 优化
> 2. 发送有 bug 的代码让 AI 修复
> 3. 让 AI 给现有代码添加新功能
>
> 有任何问题,随时在群里提问! 🚀
#openclaw#tutorial#教程