Skip to main content
CodingRefactoringadvanced

Safe Incremental Refactoring Plan for Complex Legacy Code

Formulate a phased refactoring strategy using the Mikado Method and Strangler pattern to eliminate risk.

Compatibility & Specs

Compatible AI Models
ClaudeChatGPTGemini
Last UpdatedOct 3, 2026
Customizable Variables4 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
[legacy_code_context]Legacy Code ContexttextareaRequiredLanguage, size, and responsibilities of the moduleDefault: A 900-line TypeScript checkout service (`processOrder`) that directly executes SQL queries, makes inline synchronous Stripe payment calls, mutates inventory rows, and triggers email notifications within a single try/catch block.
[operational_pain]Operational PaintextareaRequiredWhy this code is hazardous to touch todayDefault: Whenever payment logic is updated, inventory count errors occur. Unit testing is impossible because database connections and third-party Stripe SDK calls are hard-coded inline.
[target_state]Target Clean StatetextRequiredDesired decoupled architectureDefault: A domain-driven `CheckoutService` with dependency-injected interfaces (`IPaymentGateway`, `IInventoryRepository`) that publishes an `OrderPlaced` domain event for asynchronous notifications.
[test_coverage]Current Test CoveragetextRequiredExisting automated test postureDefault: Zero unit tests; 1 flakey end-to-end Selenium test in staging.

Example Execution & Benchmark Output

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

Sample VariablesInputs
[legacy_code_context]
A 900-line TypeScript checkout service (`processOrder`) that directly executes SQL queries, makes inline synchronous Stripe payment calls, mutates inventory rows, and triggers email notifications within a single try/catch block.
[operational_pain]
Whenever payment logic is updated, inventory count errors occur. Unit testing is impossible because database connections and third-party Stripe SDK calls are hard-coded inline.
[target_state]
A domain-driven `CheckoutService` with dependency-injected interfaces (`IPaymentGateway`, `IInventoryRepository`) that publishes an `OrderPlaced` domain event for asynchronous notifications.
[test_coverage]
Zero unit tests; 1 flakey end-to-end Selenium test in staging.
Expected AI ResponseVerified Result
### Phased Incremental Refactoring Roadmap #### Step 0: Pinning Behavior with Characterization Tests Before changing a single line of business logic, write 4 integration tests against a test database: - Happy path order (card succeeds, inventory decrements, email triggered). - Declined card (inventory remains unchanged, error logged). - Out-of-stock race condition. Capture the exact JSON responses as snapshots. #### Step 1: Branch by Abstraction (4 Atomic PRs) - **PR 1 (Extract Interface):** Define `IPaymentGateway` interface. Wrap the existing inline Stripe code inside a new `StripePaymentGateway` class. Inject it into `processOrder` with a default parameter so existing call-sites don't break. - **PR 2 (Extract Inventory Repository):** Move inline SQL statements into an `IInventoryRepository` implementation. Verify characterization tests pass. - **PR 3 (Event-Driven Notification):** Replace direct email dispatch with an event emitter (`events.emit('order.placed')`). Email logic moves to an isolated listener. - **PR 4 (Domain Service Assembly):** Re-assemble the slimmed-down `CheckoutService` with pure business logic and 100% mocked unit tests. #### Step 2: Zero-Downtime Rollout Deploy behind a runtime feature flag (`USE_REFACTORED_CHECKOUT`). Route 5% of internal employee orders through the new code path for 48 hours.

Best Use Cases

Scenarios and roles where this prompt produces maximum leverage.

Engineering teams modernizing mission-critical legacy modules without breaking production
Developers planning technical debt repayment in manageable sprint-sized chunks
Tech leads coaching developers on safe refactoring methodologies (Mikado, Branch by Abstraction)

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
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

OWASP Security Vulnerability & Dependency Auditor

Inspect code modules for injection vulnerabilities, insecure deserialization, broken access controls, and auth flaws.

claudechatgptgemini
#security-audit#owasp#vulnerability-scanning
Codingadvanced

Architectural Decision Record (ADR) Analysis & Trade-Off Matrix

Evaluate competing technical architectures, state assumptions, and document a formal Architectural Decision Record.

claudechatgptgemini
#system-architecture#adr#trade-offs

Related Engineering Guides

Deep-dive playbooks and system prompt methodologies for Coding

View all guides