第10课:代码审查与重构
进度 0/12
🔍
代码审查与重构
AI帮你查Bug、提优化——代码审查与重构的艺术
📖知识引入
🐛AI审查找Bug
写完代码别急着跑,先让AI审查一遍。@引用文件问「这段代码有什么问题?」AI会找出潜在Bug:未处理的边界、空值风险、循环里的低效操作——很多你自己看不出来的问题。
⚡性能优化
AI能指出性能瓶颈:「循环里调用了10次数据库,改成1次批量查询」「字符串拼接用+=低效,改成join」。一句问话就能让软件从「能跑」变成「跑得快」。
📚可读性提升
好代码像好文章——别人一看就懂。AI会建议:函数太长拆成几个小函数、变量名太短改成有意义的名字、加注释解释复杂逻辑。重构后代码自己会「说话」。
🔁重构的勇气
重构就是「不改功能只改结构」。新手怕改崩不敢动,AI给底气:每改一步AI验证「功能还在吗」,配合Git存档,改崩了一键回退——重构变得安全。
🧪AI生成测试
好软件要有测试用例:写一个测试函数验证「加法函数传3和5应返回8」。让AI帮你生成测试:「为这个函数写测试用例」,AI覆盖各种边界情况,未来改代码不怕改坏。
💡
AI审查三连:找Bug、提性能、改可读——配合Git存档,重构变得安全!
🔍代码审查与重构实战
// AI审查常用话术
// 1. 找Bug:
// "@app.js 这段代码有什么潜在Bug?"
// 2. 提性能:
// "@app.js 这段循环怎么优化?"
// 3. 改可读:
// "@app.js 帮我把这个函数重命名和拆分"
// 4. 生成测试:
// "@app.js 为这个函数写测试用例"
// 5. 整体审查:
// "@app.js 帮我做一次代码Review"
// 重构前(能跑但烂)
function f(a){let r=[];for(let i=0;i<a.length;i++){if(a[i].x){r.push(a[i])}}return r}
// 重构后(专业且清晰)
function getActiveUsers(users) {
return users.filter(user => user.isActive);
}看一段代码如何被AI改造:
原始代码(能跑但烂):
def get_users(d):
r = []
for u in d:
if u['age'] > 18:
r.append(u['name'])
return r第1步 AI审查找问题 你:@app.py 这段代码有什么问题? AI指出: ⚠️ 变量名d/r/u太短,难懂 ⚠️ 没处理u里没有'age'键的情况 ⚠️ 用列表推导式更Pythonic ⚠️ 缺少函数注释
第2步 AI提性能与可读性
你:帮我重构这段代码。
AI改后:
def get_adult_names(users: list)→list:
"""返回所有18岁以上用户的名字"""
return [
user.get('name', '未知')
for user in users
if user.get('age', 0) > 18
]
第3步 AI生成测试
你:为这个函数写测试用例。
AI生成:
def test_adults():
users = [
{'name': 'Tom', 'age': 20},
{'name': 'Lily', 'age': 15},
{'name': 'Bob', 'age': 18},
]
assert get_adult_names(users) == ['Tom']
# 边界:刚好18不算成年第4步 Git存档防回退
git commit -m "refactor: 重构get_users为列表推导式"
改崩了→git reset 回退
第5步 持续审查 每加一个功能就让AI审一遍 代码越来越像「专业作品」
审查节奏:
写代码→AI审查→重构
→生成测试→Git存档→继续
🎯小测验
第1题:AI代码审查最不可能直接帮你?
第2题:重构的定义是?
第3题:为什么让AI生成测试用例很重要?
📝本课知识点
- ✓AI审查三连:找Bug、提性能、改可读
- ✓重构=不改功能只改结构
- ✓Git存档让重构变得安全可回退
- ✓AI生成测试用例做安全网
- ✓每加功能就审查,代码越来越专业
第10课完成!继续探索下一课吧 🚀
