mcpField
S
same-results-less-code

same-results-less-code

github.com/pproenca开发218138 次安装11 周前更新
代码仓库

关于 same-results-less-code

这是一项代码审查与重构技能,用于发现自动化检查工具难以识别的冗余复杂度。它按优先级提供精简代码的指导,同时要求保持可观察行为不变。

主要功能

  1. 01按优先级划分重构规则
  2. 02识别抽象与重复问题
  3. 03以最小改动保持行为
  4. 04提供审查与验证流程

适用场景

  1. 01审查 PR 中可简化的实现
  2. 02精简不断膨胀的模块
  3. 03检查陌生代码库中的冗余复杂度

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pproenca/dot-skills --skill same-results-less-code

安装后在 Claude Code 中输入/same-results-less-code确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

AGENTS.md
metadata.json
README.md
assets/templates/
_template.md
references/
_sections.md
defense-guard-against-impossible.md
defense-let-it-throw.md
defense-null-pollution-from-bad-modelling.md
defense-validate-once-at-boundary.md
derive-boolean-from-data.md
derive-cache-as-getter-not-field.md
derive-dont-store-computed.md
derive-single-source-of-truth.md
derive-url-as-state.md
dup-config-not-copies.md
dup-cross-layer-shape.md
dup-mirrored-branches.md
dup-near-twin-functions.md
dup-parallel-types-same-shape.md
frame-composition-over-inheritance-for-shared-fields.md
frame-data-over-procedure.md
frame-function-not-class.md
frame-manager-noun-is-a-verb.md
frame-monolith-by-cohesive-axis.md
proc-build-vs-declarative-template.md
proc-if-chain-as-lookup.md
proc-manual-recursion-of-walk.md
proc-mutation-builder-over-pipeline.md
proc-sequential-awaits-could-be-parallel.md
reinvent-builtin-data-structures.md

详细介绍

社区重构最佳实践:结果不变,代码更少

这份代码审查与重构指南聚焦于那些源自判断与建模偏差的代码量:抽象选择不当、隐藏的语义重复、防御性习惯以及过早追求通用性。本指南刻意跳过 knip、eslint、ruff、tsc --noUnusedLocals 等代码检查工具或格式化工具已经能发现的问题。这是第二轮审查:机械式清理之后,还剩下什么?

核心原则

  1. 保持行为不变。 每次转换都必须产生完全相同的可观察行为——输出、错误、副作用和 API 表面均不变。
  2. 早期错误会层层放大。 框架选错,会导致结构不当,进而造成逻辑重复。应从生命周期的上游开始优化。
  3. 解释原因,而不只是做法。 每条规则都说明反模式的代价,让判断力能迁移到新场景。
  4. 尽可能量化。 相比“更简洁”,优先说明“减少 N 行代码/避免 X 类 Bug”。
  5. 不要过度重构。 遵循三次原则:重复实际出现三次后再提取抽象,而不是提前预想。

适用场景

在以下情况下使用此技能:

  • 审查 PR 时思考“能否更简单?”(这是代码检查工具无法回答的问题)
  • 重构代码量不断增加、能力却没有提升的代码
  • 审查“感觉很臃肿”的模块——标志很多、层次很多、检查很多
  • 熟悉不熟悉的代码库,尝试区分无意增加的代码量与必要的复杂性
  • 设计新模块,希望避免常见的过度抽象陷阱
  • 配合使用 knip / eslint / ruff,并希望补上这些工具无法提供的判断

以下情况不要使用此技能:

  • 代码检查工具或格式化工具已能完成的机械式清理(未使用的导入、无效导出、代码风格)——请改用 knip、eslint、ruff 或 prettier/black。
  • 算法复杂度/性能调优——请改用 complexity-optimizer。
  • 不论是否存在思维模型偏差,都要对近期修改的代码进行常规清理——请改用 code-simplifier。

按优先级排列的规则类别

#类别前缀影响规则数概述
1重造已有功能reinvent-严重5重写平台/标准库已经提供的功能
2框架选错frame-严重5抽象结构不当——明明函数就够,却用了类;采用管理器式命名;数据导向场景却使用面向对象
3隐藏的重复dup-高5语法不同,语义相同的重复实现
4存储派生状态derive-高5存储本应计算得出的内容
5过程式重建proc-中高5用命令式代码重新实现声明式概念
6投机性通用化spec-中5为从未出现的第二个使用者构建通用性
7过度防御defense-中4检查类型或流程已排除的状态
8未充分利用类型系统types-低至中6本应由类型表达的运行时防护

快速参考

1. 重造已有功能(严重)
2. 错误的框架(CRITICAL)
3. 隐藏的重复(HIGH)
4. 存储派生状态(HIGH)
5. 过程式重建(MEDIUM-HIGH)
6. 投机性通用设计(MEDIUM)
7. 防御过度(中)
8. 类型系统利用不足(低至中)

如何应用(工作流)

使用此技能审查或重构代码时:

  1. 先进行机械检查。 knip/eslint/ruff/tsc --noUnusedLocals 可以发现死代码、未使用的导入和风格问题。不要在这里重复这些工作。
  2. 阅读文件或 PR,理解其意图。 思考:这段代码试图做什么?判断的关键在于识别实现是否超出了意图。
  3. 按优先级依次检查各类别。
  4. 提出最小差异的改动。 每条规则都通过紧凑的差异展示错误做法 → 正确做法;建议也应保持这一特点。
  5. 验证行为。 输出、错误和副作用必须保持一致,测试也必须通过。
  6. 不要捆绑无关改动。 每项改动都应对应一个类别。混在一起会让审查变得困难。

不适用的情况

  • 代码尚未达到“三次法则”(只有一处或两处重复)——此时提取还为时过早。
  • 该模式确实属于已知例外(参见每条规则中的“何时不应使用此模式”部分)。
  • 重构会变成大型、高风险的改写,且缺少明确可靠的测试保障——应提出建议,而不是直接执行。
  • 对性能至关重要的热点路径中,“更简单”的形式会带来可测量的成本——先进行测量。

参考文件

文件描述
references/_sections.md类别定义和排序
assets/templates/_template.md新规则的模板
metadata.json版本和参考信息

相关技能

  • code-simplifier — 机械式简化(命名、无用代码、嵌套)。可作为互补的初步处理。
  • complexity-optimizer — 算法与性能复杂度。关注维度不同。
  • refactor — 通用重构工作流。
  • clean-code — 更广泛的整洁代码原则。本技能是其中范围更窄、更注重判断的子集。

评论

支持 Markdown