refactor

Improve code quality without changing behavior.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "refactor" with this command: npx skills add htlin222/dotfiles/htlin222-dotfiles-refactor

Code Refactoring

Improve code quality without changing behavior.

When to Use

  • Code is hard to understand or modify

  • Duplicated logic across files

  • Functions/classes are too large

  • Technical debt reduction

  • Before adding new features

Refactoring Process

  • Ensure tests exist - Add tests before refactoring

  • Small steps - Make incremental changes

  • Run tests - Verify after each change

  • Commit often - Keep changes reversible

Common Refactorings

Extract Function

// Before function processOrder(order) { // 50 lines of validation // 30 lines of calculation // 20 lines of notification }

// After function processOrder(order) { validateOrder(order); const total = calculateTotal(order); notifyCustomer(order, total); }

Replace Conditionals with Polymorphism

// Before function getPrice(type) { if (type === "regular") return basePrice; if (type === "premium") return basePrice * 1.5; if (type === "vip") return basePrice * 0.8; }

// After const pricingStrategies = { regular: (base) => base, premium: (base) => base * 1.5, vip: (base) => base * 0.8, }; const getPrice = (type) => pricingStrategiestype;

Remove Duplication

// Before function getUserName(user) { return user?.profile?.name ?? "Unknown"; } function getOrderName(order) { return order?.customer?.name ?? "Unknown"; }

// After const getName = (obj, path) => path.reduce((o, k) => o?.[k], obj) ?? "Unknown"; const getUserName = (user) => getName(user, ["profile", "name"]); const getOrderName = (order) => getName(order, ["customer", "name"]);

Code Smells

Smell Symptom Refactoring

Long Function

20 lines Extract Function

Large Class

200 lines Extract Class

Duplicate Code Same logic repeated Extract and reuse

Long Parameter

3 params Use object/builder

Feature Envy Uses other class's data Move method

Primitive Obsession Strings for everything Create value objects

Quality Metrics

  • Cyclomatic Complexity - Keep under 10 per function

  • Nesting Depth - Max 3 levels

  • Function Length - Under 20 lines preferred

  • File Length - Under 300 lines preferred

Safety Checklist

  • Tests exist and pass

  • No behavior changes intended

  • Changes are incremental

  • Each step is committed

  • Code review requested

Examples

Input: "This function is too long" Action: Identify logical sections, extract into focused functions, verify tests pass

Input: "Reduce duplication in these files" Action: Find common patterns, extract shared utilities, update call sites

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

devops

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

python

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

update-dev-docs

No summary provided by upstream source.

Repository SourceNeeds Review