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)
✅ 必须展示重构前后的代码差异
✅ 必须解释每项改动如何提升代码质量
✅ 必须验证每次改动后测试仍能通过
</关键约束>
<重构技巧>
- 重命名:使用能传达意图的描述性名称
- 提取:将大型函数拆分为单一职责的单元
- 扁平化:用卫语句/提前返回替代嵌套结构
- DRY原则:将重复代码整合为可复用函数
- 简化:用查找表替代复杂条件判断 </重构技巧>
<模板示例>
Flatten Nesting (Guard Clauses)
扁平化嵌套(卫语句)
python
undefinedpython
undefinedBefore: 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
undefinedundefinedExtract 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);
}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个及以上位置 → 提取为共享函数
- 单字母变量 → 重命名为描述性名称 </启发式规则>