我手上有个几年前的 Python 项目,结构混乱、文件命名不统一、业务逻辑缠在一起——典型“历史包袱型代码”。
这次借着掘金活动,我试了试用 Trae Solo 帮我重构,没想到效果比预期好太多。
🧹 Step 1:让 Trae Solo 扫描项目结构
我给它下达的第一个指令非常简单:
扫描整个 project 目录,告诉我结构问题。
并且列出几个典型问题:
- utils 文件夹里都是不相关的东西
- api、service、logic 含义不清晰
- 多个模块命名风格不一致(XXService、xx_service 混着来)
- 有些函数被复用但没有拆出去
这比我自己肉眼看要快太多了。
🧱 Step 2:让它“先给方案,不要动代码”
重构最怕的是“AI 擅自改代码”。
所以我告诉它:
先给重构方案,不要写代码。
Trae Solo 给了一个非常稳的分层建议:
/api
/domain
/services
/repository
/common
而且还给出具体说明:
repository 下只放 DB 相关
services 放业务逻辑,不负责 IO
common 放工具、异常、类型定义
我照着方案过了一遍,感觉是一个能落地的合理结构,于是进入下一步。
🛠 Step 3:开始重构(可控、逐步、稳)
我让它从最简单的模块开始,比如 utils。
它给出的 diff 都非常小范围:
- def readconf(path):
+ def read_config(path):
再比如把重复函数抽出来的示例:
# common/validator.py
def ensure_not_empty(value, field):
if not value:
raise ValueError(f"{field} cannot be empty")
不会出现那种“突然写了一坨东西”的恐怖情况。
🧪 Step 4:自动修 import,巨爽
旧项目最头疼的就是 import 崩坏。
我直接对 Trae Solo 说:
帮我统一修 import,让路径符合新结构。
它逐文件扫描、修复,再给我每个文件的 diff。
示例:
- from utils.helper import parse
+ from common.helper import parse
非常干净,没有乱动别的部分。
📦 Step 5:生成单元测试,补空洞
老代码最缺的就是测试。
我用一句话解决:
帮我为改过的模块生成 pytest 测试。
它自动检测:
- 输入边界
- 异常分支
- 空值情况
- 类型不匹配
示例:
def test_ensure_not_empty_fail():
with pytest.raises(ValueError):
ensure_not_empty("", "name")
这种“给人放心的代码”,完全写出了资深开发者的风格。
🎯 最后总结:Trae Solo 特别适合重构老项目
它不会一次性替你干掉全部,而是和你一起“缓缓推进”。
- 结构分析快
- 重构建议稳
- diff 小且精确
- import 自动修补能力强
- 能补测试