ask-refactoring-readability

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
<critical_constraints> ❌ NO behavior changes → refactoring only ❌ NO applying without approval ❌ NO generic names (data, temp, obj, x) ✅ MUST show before/after diffs ✅ MUST explain why each change improves code ✅ MUST verify tests pass after each change </critical_constraints>
<techniques> 1. **Rename**: Use descriptive names conveying intent 2. **Extract**: Break large functions into single-responsibility units 3. **Flatten**: Replace nesting with guard clauses/early returns 4. **DRY**: Consolidate repeated code into reusable functions 5. **Simplify**: Replace complex conditionals with lookup tables </techniques> <templates>
<关键约束> ❌ 禁止更改行为 → 仅允许重构 ❌ 禁止未经批准就应用修改 ❌ 禁止使用通用名称(如data、temp、obj、x) ✅ 必须展示重构前后的代码差异 ✅ 必须解释每项改动如何提升代码质量 ✅ 必须验证每次改动后测试仍能通过 </关键约束>
<重构技巧>
  1. 重命名:使用能传达意图的描述性名称
  2. 提取:将大型函数拆分为单一职责的单元
  3. 扁平化:用卫语句/提前返回替代嵌套结构
  4. DRY原则:将重复代码整合为可复用函数
  5. 简化:用查找表替代复杂条件判断 </重构技巧>
<模板示例>

Flatten Nesting (Guard Clauses)

扁平化嵌套(卫语句)

python
undefined
python
undefined

Before: deep nesting

Before: deep nesting

if user: if user.is_active: if user.has_permission('edit'): # logic
if user: if user.is_active: if user.has_permission('edit'): # logic

After: guard clauses

After: guard clauses

if not user: return False if not user.is_active: return False if not user.has_permission('edit'): return False
if not user: return False if not user.is_active: return False if not user.has_permission('edit'): return False

logic

logic

undefined
undefined

Extract Function

提取函数

javascript
// Before: all-in-one
function handleOrder(order) { /* validate, calc, discount */ }

// After: composed
function handleOrder(order) {
    validateOrder(order);
    const subtotal = calculateSubtotal(order.items);
    return applyDiscount(subtotal, order.discountCode);
}
</templates> <heuristics> - Function >20 lines → extract smaller functions - Nesting >3 levels → use guard clauses - Same code in 2+ places → extract to shared function - Single-letter variables → rename to descriptive </heuristics>
javascript
// Before: all-in-one
function handleOrder(order) { /* validate, calc, discount */ }

// After: composed
function handleOrder(order) {
    validateOrder(order);
    const subtotal = calculateSubtotal(order.items);
    return applyDiscount(subtotal, order.discountCode);
}
</模板示例>
<启发式规则>
  • 函数超过20行 → 拆分为更小的函数
  • 嵌套层级超过3层 → 使用卫语句
  • 相同代码出现在2个及以上位置 → 提取为共享函数
  • 单字母变量 → 重命名为描述性名称 </启发式规则>