Documentation Index
Fetch the complete documentation index at: https://mintlify.com/antinomyhq/forge/llms.txt
Use this file to discover all available pages before exploring further.
Refactoring Code
Forge assists with code refactoring, helping you improve code quality, modernize legacy code, and maintain clean architecture principles.Basic Refactoring
Request refactoring for any piece of code:- Analyze the existing code structure
- Propose a modernized version
- Explain the changes and benefits
- Implement the refactoring with your approval
Refactoring Workflows
Step-by-Step Refactoring
Review suggestions
Forge will suggest refactoring approaches, such as:
- Breaking down large functions
- Extracting reusable components
- Applying design patterns
- Improving naming and structure
Large-Scale Refactoring
For significant architectural changes:Common Refactoring Patterns
Modernizing Legacy Code
Update old code to use current best practices:vartoconst/let- Callbacks to Promises/async-await
functionto arrow functions where appropriate- String concatenation to template literals
Improving Code Structure
Enhance organization and maintainability:- Extracting functions or classes into separate files
- Creating logical modules or components
- Applying separation of concerns
- Organizing imports and dependencies
Simplifying Complex Logic
Make code more readable and maintainable:- Flatten nested conditions using early returns
- Extract complex conditions into named functions
- Apply guard clauses
- Use lookup tables or strategy patterns
Real-World Refactoring Scenarios
Scenario 1: Converting Class Components to Hooks
Before: Class-based React component with lifecycle methodsReview changes
Forge converts:
componentDidMount→useEffectthis.state→useStatethis.props→ function parameters- Class methods → function definitions
Scenario 2: Extracting Reusable Logic
Problem: Duplicated code across multiple files- Identify the common patterns
- Create a shared utility or custom hook
- Update all instances to use the extracted logic
- Ensure error handling and edge cases are covered
Scenario 3: Applying Design Patterns
Problem: Code is hard to extend and maintain- Strategy pattern with polymorphism
- Command pattern for encapsulating actions
- Factory pattern for object creation
- Implements the chosen pattern with explanation
Database Schema Refactoring
Forge can help design and refactor database schemas:- Suggest appropriate schema design
- Define tables/collections with proper types
- Recommend relationships and foreign keys
- Suggest indexes for performance
- Consider your existing database technology
Refactoring for Performance
Optimizing Algorithms
- Current algorithm complexity (O(n²), O(n log n), etc.)
- More efficient algorithms for your use case
- Memory vs. speed trade-offs
- Built-in optimized alternatives
Reducing Redundancy
- Batch related API calls
- Implement caching strategies
- Use GraphQL for efficient data fetching
- Add proper memoization
Refactoring for Testability
Make code easier to test through refactoring:- Dependency injection patterns
- Breaking functions into smaller, pure functions
- Extracting side effects
- Using interfaces for better mocking
Apply testability patterns
Forge refactors using dependency injection, pure functions, and clear interfaces.
Type Safety Refactoring
Add or improve type safety in your code:- Analyze existing code to infer types
- Add appropriate type annotations
- Use generics where beneficial
- Create type definitions for complex objects
- Suggest stricter type checking options
Architecture Refactoring
Service Layer Pattern
Refactor to follow clean architecture principles:- Extract business logic into service classes
- Keep controllers thin
- Define clear interfaces
- Apply dependency injection
Module Organization
- Domain-driven design principles
- Feature-based organization
- Layered architecture (presentation, business, data)
- Microservices boundaries (if applicable)
Best Practices for Refactoring
- Test first: Ensure you have tests before refactoring
- Small steps: Refactor incrementally, not all at once
- Preserve behavior: Functionality should remain unchanged
- Commit frequently: Create checkpoints you can return to
- Review changes: Ask Forge to review refactored code
- Document reasons: Note why refactoring was needed
Refactoring Checklist
Before starting a refactoring:- Tests exist and pass for current functionality
- You understand why the refactoring is needed
- You have a clear goal for the refactored code
- Changes can be made incrementally
- You’ve created a backup/branch
- All tests still pass
- Code is more readable and maintainable
- Performance is improved or unchanged
- Documentation is updated
- Team members can review the changes
Common Refactoring Commands
| Task | Example Prompt |
|---|---|
| Simplify logic | Simplify this complex function |
| Extract code | Extract this repeated code into a utility |
| Modernize | Update this to use modern JavaScript |
| Improve structure | Better organize this large file |
| Add types | Add TypeScript types to this module |
| Design pattern | Apply a better pattern to this code |
Integration with Testing
Refactoring and testing go hand-in-hand:- Refactor the code for better structure
- Make it more testable
- Write comprehensive unit tests
- Ensure tests cover edge cases
Next Steps
- Learn about Writing Tests for your refactored code
- Explore Code Review workflows
- Review Best Practices for development