refactoring
# Refactoring (Deep Workflow)
Refactoring changes **structure**, not **behavior**. Safety comes from **small steps**, **fast feedback**, and verification (tests, golden outputs, or controlled manual checks).
## When to Offer This Workflow
**Trigger conditions:**
- Code is hard to change; duplication; unclear module boundaries
- Need to prepare an area for a new feature without mixing behavior change
- Paying down tech debt with management expecting “no user-visible change”
**Initial offer:**
Use **six stages**: (1) clarify goal & scope, (2) establish safety net, (3) plan increments, (4) execute with reviewable commits, (5) verify behavior, (6) document & follow-ups). Confirm test coverage and release pressure.
---
## Stage 1: Clarify Goal & Scope
**Goal:** Why refactor now—reduce coupling, enable feature X, remove dead code, improve naming.
**Exit condition:** Explicit **non-goals** (no feature changes in this effort unless separately scoped).
---
## Stage 2: Establish Safety Net
**Goal:** Prefer characterization tests for legacy; golden outputs for data pipelines; use snapshot tests sparingly.
### If tests are weak
- Approval tests, short exploratory scripts, or pair review with domain expert
---
## Stage 3: Plan Increments
**Goal:** Small commits, each leaving the codebase **working** (not necessarily perfect).
### Practices
- Move code, then change behavior in separate steps (Fowler-style when helpful)
- Separate mechanical renames from logic edits for reviewability
---
## Stage 4: Execute With Reviewable Commits
**Goal:** Each PR/commit tells a story; avoid thousand-line “cleanup” dumps.
---
## Stage 5: Verify Behavior
**Goal:** CI green; compare outputs for batch jobs; manual smoke on critical paths when needed.
---
## Stage 6: Document & Follow-Ups
**Goal:** ADR or short module README for new boundaries; tickets for remaining debt accepted consciously.
---
## Final Review Checklist
- [ ] Scope and non-goals explicit
- [ ] Safety net matches risk
- [ ] Incremental, reviewable steps
- [ ] Behavior verified
- [ ] Follow-up debt tracked
## Tips for Effective Guidance
- Keep refactor commits separate from feature commits when possible.
- If behavior must change, it is not “pure refactoring”—plan as a migration with communication.
- Under hotfix pressure, minimize refactor scope or defer.
## Handling Deviations
- **Strangler** refactors: maintain adapters at boundaries until cutover is complete.
标签
skill
ai