A refactoring kata for practicing code improvement techniques on a legacy inventory management system.
Gilded Rose is a refactoring kata—a structured programming exercise—that simulates working with a legacy inventory management system for a fictional inn. It presents developers with messy, hard-to-maintain code and challenges them to improve its structure while adding a new feature ('Conjured' items) without breaking existing functionality.
Software developers and engineering teams looking to practice refactoring techniques, test-driven development (TDD), and working with legacy code constraints in a controlled, educational environment.
It provides a realistic, self-contained codebase with known 'bad smells' and specific constraints, making it an ideal tool for honing refactoring skills, learning how to safely modify legacy systems, and improving code design without the pressure of production code.
Refactoring Kata
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a deliberately messy UpdateQuality method with tangled logic for different item types, mimicking real-world legacy systems that developers must maintain.
Requires adding support for 'Conjured' items without altering the Item class, offering a concrete goal to practice safe code modifications.
Restricts changes to the Item class to simulate working with untouchable third-party code, teaching developers to refactor within real-world limitations.
Designed for test-driven development, as the complex business rules necessitate writing tests first to ensure refactoring doesn't break existing behavior.
As a kata, it's purely educational and doesn't provide reusable code or ongoing updates, making it unsuitable for direct implementation in production projects.
The README instructs running build.bat from Powershell, which may not work out-of-the-box on non-Windows systems without manual configuration.
While it encourages creativity, the kata lacks guidance on optimal refactoring patterns, potentially leading to inefficient solutions without external resources.