SuperAPI AI 工具集

moonbit-refactoring

编程与开发

查看项目

更新于 10-16 03:43

技能介绍

用途:面向 MoonBit 代码库的重构指导,目标是在不改变行为与公开契约(除非明确要求)的前提下,让代码更地道、结构更清晰。

主要能力与要点:

  1. 架构优先:先审视包结构、依赖与 API 边界,再处理局部细节;包保持聚焦(建议每包 <10k 行、每文件 <2k 行、每函数 <200 行)。
  2. 精简公开 API:只暴露下游真正需要的接口,删除多余 pub,把辅助代码移入 internal/ 包;优先无环依赖。
  3. 包拆分:拆包时先在新包临时 re-export(using @A { ... }),确认 moon check 通过后,用 moon ide find-references 找到调用点,改为 @B.f 形式,最后移除 use 并清理不再使用的 pub API。
  4. 局部重构:把自由函数改为方法以增强可发现性,可用 .. 做链式调用;用 #as_free_fn(old_name, deprecated=...) 生成过渡用的废弃自由函数,便于逐步迁移;优先显式限定 @pkg.fn。
  5. 模式匹配与视图:直接对数组、字符串做模式匹配,编译器会隐式插入 ArrayView/StringView/BytesView 避免复制;用 .. 同时匹配前后缀与中间片段;类型已知时可省略枚举构造器的完整路径;可用 is 模式与字符字面量重载(Char/UInt16/Int)简化分支。
  6. 循环:简单索引循环改用 for i in start..<end 等范围循环;有状态的循环可加类 Dafny 的 where { invariant, reasoning } 说明,decreases 不明时标 TODO。
  7. 测试与文档:优先黑盒测试(*_test.mbt 或 *.mbt.md),为公开 API 加 docstring 测试;用覆盖率定位缺失分支。

使用方式(命令保持原样):moon doc "<query>"、moon ide outline <dir|file>、moon ide find-references <symbol>、moon ide peek-def <symbol>、moon ide rename <symbol> -new-name <new_name>、moon check、moon test、moon info、moon coverage analyze -- -f summary、moon coverage analyze -- -f caret -F path/to/file.mbt。每次改动后先 moon check 再 moon test。

限制:需在 MoonBit 工具链环境下使用;重构须保持行为与公开契约;具体安装与版本要求资料暂未提供。