代码修改与优化
使用 Claude Code 重构、优化和改进现有代码
概述
Claude Code 不仅能够从零开始生成代码,更擅长对现有代码进行智能修改与深度优化。通过代码修改功能,你可以快速实现函数重命名、参数调整、结构重构等需求;而优化功能则能帮助你提升代码性能、增强可读性、修复潜在问题。
代码修改
修改简单代码
输入:修改这段 JavaScript 代码,将函数名从 add 改为 sum:
function add(a, b) {
return a + b;
}输出:
function sum(a, b) {
return a + b;
}修改复杂代码
输入:修改这段 Python 代码,添加类型注解:
def calculate_area(shape, **kwargs):
if shape == "circle":
return 3.14159 * kwargs["radius"] ** 2
elif shape == "rectangle":
return kwargs["width"] * kwargs["height"]
elif shape == "triangle":
return 0.5 * kwargs["base"] * kwargs["height"]
else:
raise ValueError(f"Unknown shape: {shape}")输出:
from typing import Dict, Union
def calculate_area(shape: str, **kwargs: Dict[str, Union[int, float]]) -> float:
"""
计算不同形状的面积
参数:
shape: 形状类型,可以是 "circle", "rectangle", 或 "triangle"
**kwargs: 形状的参数
- 圆形: 需要 "radius" 参数
- 矩形: 需要 "width" 和 "height" 参数
- 三角形: 需要 "base" 和 "height" 参数
返回:
计算出的面积
异常:
ValueError - 当形状类型未知或缺少参数时抛出
"""
if shape == "circle":
if "radius" not in kwargs:
raise ValueError("Circle requires 'radius' parameter")
return 3.14159 * kwargs["radius"] ** 2
elif shape == "rectangle":
if "width" not in kwargs or "height" not in kwargs:
raise ValueError("Rectangle requires 'width' and 'height' parameters")
return kwargs["width"] * kwargs["height"]
elif shape == "triangle":
if "base" not in kwargs or "height" not in kwargs:
raise ValueError("Triangle requires 'base' and 'height' parameters")
return 0.5 * kwargs["base"] * kwargs["height"]
else:
raise ValueError(f"Unknown shape: {shape}")修改代码结构
输入:重构这段 JavaScript 代码,将回调函数改为 Promise:
function fetchData(url, callback) {
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = () => {
if (xhr.status === 200) {
callback(null, JSON.parse(xhr.responseText));
} else {
callback(new Error(`Request failed with status ${xhr.status}`));
}
};
xhr.onerror = () => {
callback(new Error('Network error'));
};
xhr.send();
}输出:
function fetchData(url) {
return new Promise((resolve, reject) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', url);
xhr.onload = () => {
if (xhr.status === 200) {
try {
const data = JSON.parse(xhr.responseText);
resolve(data);
} catch (error) {
reject(new Error(`Failed to parse JSON: ${error.message}`));
}
} else {
reject(new Error(`Request failed with status ${xhr.status}`));
}
};
xhr.onerror = () => {
reject(new Error('Network error'));
};
xhr.send();
});
}代码优化
性能优化
输入:优化这段 Python 代码的性能:
def find_duplicates(lst):
duplicates = []
for i in range(len(lst)):
for j in range(i + 1, len(lst)):
if lst[i] == lst[j] and lst[i] not in duplicates:
duplicates.append(lst[i])
return duplicates输出:
def find_duplicates(lst):
seen = set()
duplicates = set()
for item in lst:
if item in seen:
duplicates.add(item)
else:
seen.add(item)
return list(duplicates)优化后时间复杂度从 O(n²) 降低到 O(n)
可读性优化
输入:优化这段代码的可读性:
def calc(a,b,c):
if a>b:
return a*c
else:
return b/c输出:
def calculate_result(value_a: float, value_b: float, multiplier: float) -> float:
"""
根据输入值计算结果
如果 value_a 大于 value_b,返回 value_a 乘以 multiplier
否则返回 value_b 除以 multiplier
参数:
value_a: 第一个比较值
value_b: 第二个比较值
multiplier: 乘法因子
返回:
计算结果
"""
if value_a > value_b:
return value_a * multiplier
else:
return value_b / multiplier安全性优化
输入:修复这段 Python 代码的 SQL 注入漏洞:
def get_user(username):
cursor.execute(f"SELECT * FROM users WHERE username = '{username}'")
return cursor.fetchone()输出:
def get_user(username):
cursor.execute("SELECT * FROM users WHERE username = %s", (username,))
return cursor.fetchone()使用参数化查询防止 SQL 注入攻击
最佳实践
| 实践 | 说明 |
|---|---|
| 明确修改范围 | 指定具体要修改的内容,如"将函数名从 fetchData 改为 getUserData" |
| 提供上下文 | 说明代码用途和修改目的,如"这个函数的性能瓶颈在于循环嵌套" |
| 分阶段修改 | 先完成核心功能修改,再进行性能优化,最后添加文档和测试 |
| 验证修改结果 | 运行测试用例、检查代码风格一致性、确认性能提升效果 |
请求示例
| 类型 | 示例 |
|---|---|
| ✅ 好的请求 | "将函数名从 fetchData 改为 getUserData,并保持功能不变" |
| ❌ 不好的请求 | "修改这段代码" |