code-groom
摘要:code-groom 是一个专注于代码结构梳理而非风格美化的工具。它通过五条判断原则(单一数据源、单层抽象、封装、消冗余、状态找主人)和七条操作规则(谁产生谁持有、死代码清除等),提供语言无关的代码结构自查框架,帮助开发者识别冗余中间层、状态分散、函数职责过多等底层问题,最终实现只改内部组织而不改变外部行为的代码优化。
代码组织梳理,不是风格美化。
大多数代码审查工具关注命名、格式和 lint 规则。code-groom 关注更底层的问题:冗余的中间层、散落在调用方身上的状态、一个函数干了好几层的事。它提供五条判断原则(改不改)加七条操作规则(怎么改),是一套语言无关的代码结构自查框架。
当你觉得代码"臃肿但说不上哪不对"时,用它过一遍。
安装
方式一:通过 AI 安装(推荐)
将以下提示词发送给你的 AI Agent:
请根据 https://skillhub.cn/install/skillhub.md,安装 code-groom。
方式二:Git 克隆
gitclone https://gitee.com/code-ape-hc/code-groom.git然后将code-groom目录放入你的 Agent 的 skills 目录:
- WorkBuddy:
~/.workbuddy/skills/code-groom/ - Claude Code:
~/.claude/skills/code-groom/ - 其他支持 SkillHub 的客户端: 见各自文档
安装后,对 Agent 说"梳理代码"或"groom"即可触发。
核心方法
五原则(判断力 — 改不改)
| 原则 | 一句话 |
|---|---|
| 单一数据源 | 同一份值有没有在多处重复定义?→ 收归一处 |
| 单层抽象 | 一个函数做了超过一层的事?→ 拆成编排层 + 细节函数 |
| 封装 | 外部能改这个模块的内部字段吗?→ 加只读或私有 |
| 消冗余 | 方法体只有一行调另一个方法?→ 内联,删方法 |
| 状态找主人 | 内部状态散落在调用方身上?→ 抽成类,构造/dispose 收口 |
七规则(操作手法 — 怎么改)
| 规则 | 自查动作 |
|---|---|
| R1 谁产生谁持有 | 变量产生端自持,不让外部传回来 |
| R2 死代码清除 | 搜索引用数:0 删,1 考虑内联 |
| R3 纯转发删除 | 方法体一行调同名方法 → 删 |
| R4 出口收进消费端 | 仅内部用的公开接口 → 不公开 |
| R5 动态适配用接口 | 不同场景不同行为 → 接口注入,不写死实现 |
| R6 小文件合并 | 同职责 < 50 行 → 合 |
| R7 重复模式抽方法 | 同一结构 ≥ 2 次 → 抽 |
执行流程
- 扫描影响范围— 谁持有谁调用、谁监听谁发射、类型定义在哪
- 过五原则— 逐条问"我这个改动违反吗?"
- 过七规则— 具体动手时逐条执行
- 自验— 编译检查 + 竞态复核
约束
- 行为零变化:只改内部组织,不改外部行为
- 不过度抽象:拆出来 3 行且只被一处调用 → 不拆
- 不扩大范围:只改命中的点,跨模块只记录不改
与其他工具的区别
| code-groom | linter | 重构工具 | |
|---|---|---|---|
| 关注点 | 结构骨架(抽象层级、状态归属) | 格式风格(缩进、命名) | 行为变更(拆分模块、换算法) |
| 语言绑定 | 无 | 特定语言 | 特定语言 |
| 输出 | 改动清单 + 原因 | 错误列表 | 新代码 |