用途:在重构代码时强制采用「函数式内核 + 命令式外壳」方法,避免直接重构逻辑与副作用混杂的代码。
主要能力与流程:
- 分析:识别代码中的纯逻辑(计算、转换、校验)与副作用(API 调用、状态更新、localStorage、Date.now())。
- 抽取:将纯逻辑移到 utils/ 目录,作为纯函数导出。例如把缓存有效期判断抽为 isCacheValid(timestamp, currentTime, ttl)。
- 测试:只为抽取出的纯函数编写基于输出的测试,如断言 isCacheValid(1000, 2000, 5000) 为 true、isCacheValid(1000, 10000, 5000) 为 false。
- 重构:命令式外壳变为薄包装,仅保留 I/O,如读取 localStorage、JSON.parse 后调用纯函数。
适用场景:用户要求重构、合并、抽取或减少重复;为 hooks、组件或含 I/O 的代码补充测试覆盖;代码评审发现逻辑埋在重副作用代码中。
常见错误与红线:先重构后测试(缺少回归安全网);在测试中 mock Date.now()(应把时间作为参数注入);直接测试 hooks(需 QueryClient、上下文 mock,应先抽取逻辑);跳过分析步骤。若需要为外部 API 之外的依赖写 vi.mock()、测试调用 useState/useQuery/Firebase 的函数、或必须用 renderHook()/QueryClientProvider 才能测试,应停止并重新分析。
限制:仅适用于上述场景;具体安装命令、平台支持与收费信息暂未提供。