← ClaudeAtlas

dry-refactoringlisted

Guides systematic code refactoring following the DRY (Don't Repeat Yourself) principle. Use when user asks to eliminate code duplication, refactor repetitive code, apply DRY principle, or mentions code smells like copy-paste, magic numbers, or repeated logic. Implements a 4-step workflow from identifying repetition to verified refactoring.
aiskillstore/marketplace · ★ 329 · Code & Development · score 79
Install: claude install-skill aiskillstore/marketplace
# DRY 标准化流程:从识别到重构 这个技能指导你系统性地应用 DRY (Don't Repeat Yourself) 原则,通过四步标准化流程消除代码重复,提升代码质量和可维护性。 ## When to Use This Skill 使用此技能当用户请求: - 消除代码重复或冗余 - 重构有明显复制粘贴痕迹的代码 - 应用 DRY 原则优化代码库 - 识别并修复"代码坏味道"(如魔术数字、重复逻辑) - 提取公共逻辑为可复用单元 - 改善代码的可维护性 **关键触发词**: DRY, 重复代码, 代码重复, 重构, 消除重复, 复制粘贴, 魔术数字, 代码坏味道, 抽象, 提取函数 ## 核心思想 > **系统中的每一处知识都必须拥有一个单一、明确、权威的表示。** 这意味着: - 任何业务逻辑、算法或配置信息都应该只存在于代码库的**一个地方** - 如果需要修改,你只需改这**一个地方** - 修改会自动反映到所有使用该逻辑的地方 **两次法则 (Rule of Two)**: 当你第二次写下几乎相同的代码块时,警钟就应该敲响。这是开始重构的信号。 ## 四步标准化流程 这是一个可在编码任何阶段应用的微循环。严格按照步骤执行,确保重构的安全性和有效性。 --- ### 第一步:识别重复 (Identify Repetition) **目标**: 像侦探一样,对代码中的"坏味道"保持警惕,找出所有重复。 #### 1.1 明显的重复 **直接复制粘贴**: - 两块或多块代码长得几乎一模一样 - 只有变量名或少数值不同 - 这是最明显、最需要被消除的重复 **示例**: ```javascript // 重复 1 function calculateOrderDiscount(orderTotal) { if (orderTotal > 100) { return orderTotal * 0.1; } return 0; } // 重复 2 function calculateCouponDiscount(couponTotal) { if (couponTotal > 100) { return couponTotal * 0.1; } return 0; } ``` **"魔术数字"或字符串**: - 同一个配置值或字符串在多处以字面量形式出现 - 例如:`0.08`、`"http://api.example.com"`、`100` **示例**: ```python # 魔术数字重复 def calculate_tax_1(amount): return amount * 0.08 # ❌ 魔术数字 def calculate_tax_2(amount): return amount * 0.08 # ❌ 再次出现 def calculate_total(amount): tax = amount * 0.08 # ❌ 第三次 return amount + tax ``` #### 1.2 语义上的重复 **结构性重复**: - 代码结构相似,但具体变量名或值不同 - 多个 if-else 结构都在做类似的条件判断和赋值 **示例**: ```typescript // 结构性重复 function processUserData(user: User) { if (user.age >= 18) {