SuperAPI AI 工具集

long-function-split

编程与开发

查看项目

更新于 10-16 06:19

技能介绍

用途:把做太多事情的函数拆分为一组命名良好、单一职责的小函数,目标是让代码读起来像目录——函数名说明做什么,函数体说明怎么做。

触发条件:函数体≥100行;同一函数体内混合多个抽象层级(如校验+数据库查询+格式化+发邮件);嵌套3层以上;用// Step 1:等注释充当分段;多个返回路径各自做大量工作;难以单元测试。

使用方式:先通读并标注函数,识别抽象层级与自然接缝,非正式地为每个待抽取块命名;再写出分解计划(原函数→编排函数+若干抽取函数)并请用户确认;随后按规则抽取:命名用动词+名词、从调用者视角命名、布尔函数用is/has/can前缀;参数≤3个,否则传对象解构;优先返回值而非修改参数;编排函数10–25行,叶子函数5–30行,超过40行则递归再拆;副作用操作(I/O、变更、日志)单独隔离,纯转换函数无副作用;错误处理避免在每个函数重复try/catch,倾向冒泡到编排层的统一处理器。

输出:先给编排函数,再按调用顺序列出抽取函数,保持行为语义等价,保留解释“为什么”的注释,并附函数/行数/用途/是否纯函数的汇总表,说明可测试性收益与不明显的命名决策。

语言惯例:JS/TS用const箭头函数与参数解构;Python用模块级辅助函数、类型提示、_private_helper命名;Java/C#优先同类私有方法;Go用包级非导出函数并返回(result, error)。

限制与反模式:避免抽取读起来更差的2行函数、给每个辅助函数传巨型上下文结构、只重命名重排而不改结构、为凑行数而抽取、建立utils.js垃圾场。交付前需核对编排函数是否像高层摘要、命名是否描述做什么、是否单一职责、纯函数无副作用、参数≤3、行为无变化。具体安装或调用命令暂未提供。