Files
obsidian-notes/InBox/OpenMole:坏味道驱动重构的工程化实践.md

85 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
source: 微信公众号「逸言」
title: OpenMole坏味道驱动重构的工程化实践
author: 张逸少
date: 2026-06-17
url: https://mp.weixin.qq.com/s/Whc0JYUHcwI5pPZwDNUCqw
tags: [重构, BDR, OpenMole, AI编程, SDD, 坏味道]
---
# OpenMole坏味道驱动重构的工程化实践
## 核心概念BDRBad smells-Driven Refactoring
规约驱动开发SDD让业务规约成为 AI 研发的唯一事实源。BDR 是 SDD 在重构领域的等价物——**把代码坏味道当作与 PRD 同级的事实源**。
**BDR 铁律:** 没有写进坏味道规约的重构,原则上不准做;识别出坏味道之后,也不允许跳过规约直接开改。
BDR 与 SDD 五步同构:
1. 建立**重构宪法**Constitution——定义重构第一性原则、标准步骤和流程门禁
2. AI 扫描代码库,将坏味道写成可验收的规约条目(`badsmells.md`
3. 根据规约分解任务(`tasks.md`
4. 通过分析环节(`analysis.md`)做差分检查
5. 按标准步骤执行重构
## OpenMole 框架
开源地址https://github.com/agiledon/openmole
将 BDR 封装为跨平台 Agent Plugin 框架,通过 npm 包 `openmole` 分发。
**安装:** `npm install -g openmole`,然后在目标项目中执行 `openmole init`
**支持的 IDE7种**
| IDE | 表现形式 |
|-----|---------|
| Cursor | `.cursor/skills/` + `.cursor/commands/` + 用户级 symlink |
| OpenCode | `opencode.json` 注册 `.opencode/plugins/openmole.js` |
| Claude Code | 用户级 `~/.claude/plugins/local/openmole` symlink |
| Codex | 项目 `plugins/openmole` symlink + marketplace 注册 |
| Gemini CLI | `.gemini/skills/``.gemini/commands/` |
| Kiro | `.kiro/skills/``.kiro/commands/` |
| Qoder | `.qoder/skills/``.qoder/commands/` |
**工作区结构:**
```
openmole/
├── config.yaml # current_change · installed_ides
└── changes/
├── <change-name>/
│ ├── badsmells.md
│ ├── tasks.md
│ └── analysis.md
└── archive/
```
### 五个阶段
1. **Explore**`mole:explore`)——系统性地识别代码坏味道,按元规约格式写入 `badsmells.md`
2. **Plan**`mole:plan`)——将坏味道分解为可执行的重构任务,输出 `tasks.md`
3. **Verify**`mole:verify`)——差分检查,确保规约与任务一致
4. **Apply**`mole:apply`)——按任务顺序逐项执行重构,每项经用户确认
5. **Archive**`mole:archive`)——归档
## 实际验证roncoo-payJava 在线支付系统)
扫描发现 **32 条坏味道**,按类别:
- **重复代码8条**BaseController 4 份 90% 相同、ConfigUtil 6 份相同模式、枚举 5 份 copy-paste 等
- **大型类和方法4条**DateUtils 1486 行、God Class 1532 行承担 8+ 职责等
- **耦合问题4条**DAO 层越权、Spring Bean 绕过 DI 等
- **异常处理4条**:异常吞没返回 null、fail-silent、e.printStackTrace()
- **不良实践7条**public static 可变字段、SimpleDateFormat 线程不安全、sun.misc API 等
- **面向对象问题3条**:贫血领域模型、字段注入等
- **安全问题2条**MD5 密码哈希、敏感信息泄露
分解为 **31 个重构任务**,分 9 个阶段执行(从快速清理→异常修复→配置规范化→重复代码消除→大型重构→耦合修复→领域模型提升→安全加固→代码规范)。
## 核心价值
1. **可审计**——规约可查、任务可追、测试可验,不再是"AI 改完就忘"的黑箱
2. **降认知负荷**——面对陌生遗留代码库AI 自动完成扫描→识别→分解→验证,开发者只需决策和确认
3. **可持续治理**——change 机制支持定期发起新重构周期,小步迭代持续提升代码质量
> "在 AI 时代,若没有一个和代码同权的规约层,'重构'最容易退化成不可审计的聊天。把坏味道上升为重构的'纲',让规约走在前面。"