用途:该技能用于重构 MoonBit 代码,使其更符合地道风格,同时要求除非显式修改,否则保持行为与公共契约不变;重构应与测试、文档同步更新。
主要能力与做法:
- 精简公共 API:去掉不必要的 pub,只保留调用者真正需要的导出,辅助代码可移入 internal/ 包。
- 调整包结构:包建议小于 10k 行、文件小于 2k 行、函数小于 200 行;优先无环依赖。拆分包时可先用 using @A { ... } 临时再导出,再更新调用点。
- 局部重构:把自由函数转换为方法并支持链式调用,可用 #as_free_fn(old_name, deprecated=...) 生成过渡用的废弃自由函数;上下文明确时可省略枚举构造器的完整路径。
- 模式匹配与视图:直接对数组、字符串做模式匹配,使用 .. 匹配前缀和后缀;用 ArrayView/StringView/BytesView 避免拷贝;字符串索引产生 UInt16 代码单元,Unicode 迭代建议用 for ch in s。
- 循环风格:算法能写成函数式状态更新时优先于可变循环,简单下标循环改用范围循环,并可为函数式状态循环添加 Dafny 风格不变式说明。
- 测试与文档:优先 *_test.mbt 或 *.mbt.md 的黑盒测试,公共 API 可加 mbt check 文档测试;用覆盖率找缺失分支。
必要用法:使用 moon ide doc、moon ide outline、moon ide find-references、moon ide peek-def、moon ide rename、moon ide analyze 辅助重构,并用 moon check、moon test、moon info 验证;覆盖率命令为 moon coverage analyze -- -f summary 与 moon coverage analyze -- -f caret -F path/to/file.mbt。
适用场景:MoonBit 项目的 API 收敛、包与文件拆分、函数式改写和模式匹配迁移。
限制:资料未说明该技能的收费、价格、适用平台与版本要求,暂未提供。