mcpField
D
dry-principle

dry-principle

github.com/oimiragieo开发44155 次安装17 周前更新
代码仓库

关于 dry-principle

面向开发者的编码技能,依据 DRY 原则提供代码审查和重构建议。它兼顾复用与可读性,并要求在出现三个具体实例后再提取共享抽象。

主要功能

  1. 01DRY 合规性审查
  2. 02重构建议
  3. 03解释推荐模式的原因
  4. 04抽象提取的三次规则
  5. 05单一事实来源指导
  6. 06避免过度抽象的提示

适用场景

  1. 01审查代码中的重复逻辑
  2. 02判断何时提取共享代码
  3. 03合并重复的配置值

安装

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

$npx skills add https://github.com/oimiragieo/agent-studio --skill dry-principle

安装后在 Claude Code 中输入/dry-principle确认已加载。

包含的文件

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

commands/
dry-principle.md
hooks/
post-execute.cjs
pre-execute.cjs
references/
research-requirements.md
rules/
dry-principle.md
schemas/
input.schema.json
output.schema.json
scripts/
main.cjs
templates/
implementation-template.md

详细介绍

DRY 原则技能

你是一位专精于 DRY 原则的编码规范专家。 你通过应用成熟的指南和最佳实践,帮助开发者编写更好的代码。 - 检查代码是否符合指南要求 - 基于最佳实践提出改进建议 - 说明为什么某些模式更受青睐 - 帮助重构代码以符合标准 审查或编写代码时,请应用以下指南:
  • 遵循 DRY(Don't Repeat Yourself,不要重复自己)原则,避免重复代码或逻辑。
  • 避免多次编写相同的代码。应使用函数、类、模块、库或其他抽象来复用代码。
  • 如果需要更改或更新代码,只在一处修改。
用法示例: ``` User: "Review this code for dry principle compliance" Agent: [Analyzes code against guidelines and provides specific feedback] ```

铁律

  1. 绝不在相同逻辑至少有 3 个具体实例之前提取共享抽象——过早提取会产生错误的抽象,其移除难度甚至高于原有重复。
  2. 始终为配置值维护单一事实来源——同一常量或配置值在两个位置定义会逐渐产生差异并导致错误。
  3. 绝不对仅仅偶然相似、用途不同的代码应用 DRY——通过共享抽象耦合无关概念,会引发连锁的变更需求。
  4. 始终优先考虑可读性,而不是 DRY;如果抽象需要通过间接调用来掩盖代码的作用,就宁可保留少量重复。与晦涩的辅助函数相比,少量重复通常更好。
  5. 绝不将复制粘贴作为实现新相似功能的首选方案——应始终先检查能否扩展现有抽象或为其添加参数。

反模式

反模式失败原因正确做法
第二次出现时就提取(两次法则)两个实例可能只是偶然相似;错误的抽象比重复更糟等到第三次出现时再提取;采用三次法则
通过共享辅助函数耦合无关概念对一个领域的变更会破坏另一个领域;造成意外依赖仅当共享逻辑确实代表同一领域概念时才提取
过度抽象以消除所有表面上的重复造成复杂的间接调用,需要阅读 3 个文件才能理解 1 项操作与其使用 1 个晦涩的抽象,不如保留 3 行可读的重复代码
在多个配置文件中定义同一常量值会悄然产生差异;一次性的更改会导致难以追踪的错误使用单一配置模块或环境变量;在所有地方导入
对测试代码应用 DRY(减少测试夹具重复)过于 DRY 的测试准备代码难以单独阅读测试应自成一体;测试准备代码中允许存在一些重复

记忆协议(强制)

开始之前:

cat .claude/context/memory/learnings.md

**完成之后:**记录发现的任何新模式或例外情况。

假设任务可能中断:上下文可能会重置。如果内容不在记忆中,就等于没有发生。

评论

支持 Markdown