SuperAPI AI 工具集

prefer-named-functions

编程与开发

查看项目

更新于 10-15 20:13

技能介绍

用途:这是一项跨技术栈的编码规范技能,目标是在定义函数时优先使用具名函数而非匿名函数,从而改善堆栈追踪、代码导航、可搜索性、复用、可测试性,并让读者无需解析函数体即可理解意图。

主要能力:识别变更或审查代码中的匿名可调用对象(内联 lambda、箭头函数、函数表达式、代码块、匿名类、匿名默认导出);将其分类为可保留或应命名/提取;检查堆栈追踪、日志与工具影响;发现重复的匿名形态并建议提取为单一具名函数。

使用方式:编写新函数时先命名,采用语言惯用形式(函数声明、具名函数表达式、具名 lambda 绑定、具名方法或具名局部辅助函数),名称应描述领域意图而非实现机制;当匿名回调超出单一简单表达式时,提取为具名函数或具名局部常量;避免匿名默认导出与匿名模块级函数,改用显式具名导出;遵循项目既有约定。

适用场景:定义回调、处理器、监听器、映射器、谓词、比较器、归约器、副作用或任务;将匿名函数赋给无意义名称的变量;传入含非平凡逻辑的内联 lambda;定义事件处理器、路由处理器、中间件或任务;从模块导出匿名函数或匿名默认导出;多处重复相同匿名函数形态。

限制与例外:当技术栈本身以匿名可调用为惯用或必需形式(如单表达式集合操作 map/filter/reduce、DSL 尾随 lambda、Kotlin 尾随 lambda、Ruby 块、Scala for 推导、SAM 转换、框架钩子)时可保留匿名;函数体为简单自明表达式时可保留;命名反而损害可读性、单次局部延续、框架或运行时要求匿名形式、项目约定一致使用匿名时,均可保留。此时应保持匿名体小而聚焦,超出简单表达式则提取为具名函数。

审查问题:该可调用对象是否本可具名却匿名?函数体是否超出简单自明表达式?命名是否有助于堆栈追踪、导航、搜索或复用?匿名形式是否确为技术栈、框架或可读性所需?是否存在重复匿名形态可共享具名定义?是否为应命名的匿名默认导出或匿名模块级函数?

结果报告:完成任务时说明哪些匿名可调用对象被识别、命名或提取,哪些被有意保留匿名及原因(技术栈惯用、函数体简单、框架要求或项目约定),以及项目约定或技术栈约束是否影响了选择。