L19. 重构与优化:让代码更性感
Vibe Coding 宣言:写出来的代码是给机器跑的,也是给人看的。别让你的代码像一坨面条。
0. 为什么这一课至关重要? (Why It Matters)
- 可读性 (Readability):三个月后回来看自己的代码,还能看懂吗?
- 技术债 (Technical Debt):现在的偷懒,就是未来的加班。
- Pythonic:同样的功能,Java 可能要写 10 行,Python 只要 1 行。学会这一行怎么写。
1. 目标 (Goal)
识别代码中的 坏味道 (Bad Smells),并利用 Claude 进行 重构 (Refactoring),使代码符合 PEP8 规范。
2. 核心概念/装备/指令 (The Core)
2.1 坏味道 (The Smells)
- Long Method: 一个函数写了 100 行。
- Magic Number:
if x > 300(300 是啥?)。 - Duplicate Code: 复制粘贴了三遍一样的逻辑。
2.2 重构手法 (The Moves)
- Extract Method: 把那一坨代码提出来,变成一个小函数。
- Rename: 给变量起个好名字。
- List Comprehension: 列表推导式,Python 的精髓。
3. 实战演练 (Action)
Step 1: 识别坏味道
找一段你写的烂代码(比如 L14 里的爬虫)。
Step 2: 让 Claude 诊断
markdown
# Context
我有以下代码 [粘贴代码]。
# Task
请指出代码中的坏味道 (Code Smells)。
重点关注:函数过长、命名不规范、硬编码。Step 3: 让 Claude 重构
markdown
# Task
请帮我重构这段代码。
要求:
1. 拆分函数,每个函数不超过 20 行。
2. 使用 Type Hint (类型提示)。
3. 使用 Pythonic 写法 (如列表推导式)。
4. 保持原有功能不变(确保测试通过)。Step 4: 对比效果
Before:
python
res = []
for i in range(10):
if i % 2 == 0:
res.append(i * i)After:
python
res = [i * i for i in range(10) if i % 2 == 0]4. 常见问题 (FAQ - Vibe Style)
Q: 什么时候重构? A: 随时。 只要觉得看着难受,就改。尤其是当你准备复制粘贴的时候,停下来,重构。
Q: 重构改坏了怎么办? A: 这就是为什么要先写测试! 有了测试,你才敢大胆重构。如果不跑测试就重构,那叫“裸奔”。
Q: 所有的 for 循环都要改成列表推导式吗? A: 不。 如果逻辑太复杂,还是写成 for 循环清楚。可读性永远第一。
5. 验收标准 (Definition of Done)
- 所有函数不超过 50 行。
- 没有
a,b,tmp这种无意义的变量名。 - 使用了 Type Hint (如
def add(x: int) -> int:)。 - 运行 pylint 评分超过 8.0。
Next Mission: L20. 第二次评审 (Code Review):安全与规范