Skip to main content
CodingRefactoringintermediate

Legacy Codebase Refactoring & Technical Debt Reducer

Systematically deconstruct tightly coupled spaghetti code into isolated, testable pure functions without breaking behavior.

Compatibility & Specs

Compatible AI Models
ClaudeChatGPTGemini
Last UpdatedApr 1, 2026
Customizable Variables3 parameters

How to Use This Prompt

Follow this 3-step workflow to extract high-signal responses from any compatible AI model.

01

1. Tailor the Parameters

Use the interactive customizer above to substitute the bracketed placeholders with your exact context, requirements, and constraints.

02

2. Send to AI Model

Copy the prompt and paste it into Claude, ChatGPT, Gemini, or Copilot. These models follow structured multi-step constraints reliably.

03

3. Review and Iterate

Review the output against the verified benchmark below. Follow up in the conversation to stress-test edge cases or refine tone.

Prompt Variables & Parameters

Reference breakdown of every dynamic variable embedded in this prompt template.

PlaceholderParameter NameTypeStatusDescription & Guidance
[programming_language]Programming LanguagetextRequiredLanguage of the legacy moduleDefault: TypeScript / Node.js
[legacy_code]Legacy CodetextareaRequiredPaste the tangled code moduleDefault: async function handleOrder(orderData: any, user: any) { if (user) { if (user.status === 'ACTIVE') { if (orderData.items && orderData.items.length > 0) { let total = 0; for (let i = 0; i < orderData.items.length; i++) { total += orderData.items[i].price * orderData.items[i].qty; } if (orderData.coupon) { if (orderData.coupon === 'SAVE10') total = total * 0.9; else if (orderData.coupon === 'SAVE20') total = total * 0.8; } const result = await db.orders.create({ data: { userId: user.id, total } }); await sendEmail(user.email, 'Order confirmed', 'Your order id is ' + result.id); return { success: true, orderId: result.id }; } else { throw new Error('No items'); } } else { throw new Error('User inactive'); } } else { throw new Error('No user'); } }
[refactoring_goal]Refactoring GoaltextRequiredWhat outcome you want to achieveDefault: Extract pure domain calculation logic, eliminate Arrow anti-pattern nesting with guard clauses, and isolate database/email side effects

Example Execution & Benchmark Output

Sample input arguments and the verified AI response demonstrating expected quality and formatting.

Sample VariablesInputs
[programming_language]
TypeScript / Node.js
[legacy_code]
async function handleOrder(orderData: any, user: any) { if (user) { if (user.status === 'ACTIVE') { if (orderData.items && orderData.items.length > 0) { let total = 0; for (let i = 0; i < orderData.items.length; i++) { total += orderData.items[i].price * orderData.items[i].qty; } if (orderData.coupon) { if (orderData.coupon === 'SAVE10') total = total * 0.9; else if (orderData.coupon === 'SAVE20') total = total * 0.8; } const result = await db.orders.create({ data: { userId: user.id, total } }); await sendEmail(user.email, 'Order confirmed', 'Your order id is ' + result.id); return { success: true, orderId: result.id }; } else { throw new Error('No items'); } } else { throw new Error('User inactive'); } } else { throw new Error('No user'); } }
[refactoring_goal]
Extract pure domain calculation logic, eliminate Arrow anti-pattern nesting with guard clauses, and isolate database/email side effects
Expected AI ResponseVerified Result
### 1. Code Smell Catalog 1. **Deep Nesting (Arrow Anti-Pattern):** Five levels of nested `if` statements create high cyclomatic complexity. 2. **Mixed Levels of Abstraction:** Mathematical pricing logic is coupled directly to network I/O (`db.orders.create`, `sendEmail`). 3. **Primitive Obsession & Untyped Data:** `orderData: any` and magic string discount coupons (`'SAVE10'`) lack type safety. 4. **Untestable Side Effects:** Unit testing the discount calculation requires mocking the database and email server. ### 3. Refactored Implementation Excerpt ```typescript // 1. Pure Domain Logic (Zero dependencies, trivially unit-testable) export function calculateOrderTotal(items: readonly OrderItem[], couponCode?: string): number { const subtotal = items.reduce((acc, item) => acc + (item.priceCents * item.quantity), 0); const discountMultiplier = getCouponDiscount(couponCode); return Math.round(subtotal * discountMultiplier); } // 2. Orchestration with Clean Guard Clauses export async function handleOrder(order: ValidatedOrder, user: ActiveUser): Promise<OrderResult> { validateUserEligibility(user); validateOrderItems(order.items); const totalCents = calculateOrderTotal(order.items, order.couponCode); const createdOrder = await orderRepository.create(user.id, totalCents); // Non-blocking notification notificationService.sendOrderConfirmation(user.email, createdOrder.id).catch(logger.error); return { success: true, orderId: createdOrder.id }; } ```

Best Use Cases

Scenarios and roles where this prompt produces maximum leverage.

Engineers untangling legacy Express or Next.js route handlers before adding new features
Tech leads setting code quality standards during code review refactoring drives
Developers improving unit testability of mission-critical checkout or authentication flows

Tips for Best Results

Techniques to elevate response fidelity

  • •Provide rich background context rather than one-sentence inputs to receive deep, non-generic responses.
  • •Engage in multi-turn conversation: use the initial output as a baseline, then ask the AI to sharpen specific sections.
  • •Prompt the model to highlight any hidden assumptions or missing trade-offs in its recommendations.

Common Mistakes to Avoid

Frequent failure modes and anti-patterns

  • •Giving minimal context and expecting nuanced, expert-level strategic output.
  • •Not validating factual references, citations, or statistical claims with verified primary sources.
  • •Skipping the customization step and pasting raw bracketed template variables into the AI chat.

Related AI Prompts

Complementary workflows in Coding

View all Coding prompts
Codingadvanced

Principal Code Reviewer & Architecture Auditor

Conduct rigorous architectural code reviews identifying memory leaks, race conditions, and typing holes.

claudechatgptcopilot
#code-review#clean-code#architecture
Codingintermediate

Exhaustive Edge-Case Unit & Integration Test Generator

Analyze production functions to discover subtle concurrency, boundary, and null pointer edge cases and write unit tests.

claudechatgptgemini
#unit-testing#integration-testing#edge-cases
Codingadvanced

Engineering RFC & Technical Design Document Author

Author comprehensive Request for Comments (RFC) documents detailing alternatives considered, trade-offs, and rollout risks.

claudechatgptgemini
#rfc#design-doc#technical-writing

Related Engineering Guides

Deep-dive playbooks and system prompt methodologies for Coding

View all guides