A collection of code katas focused on refactoring legacy code to follow SOLID principles and improve testability.
Racing Car Katas is a collection of programming exercises that simulate working with legacy code. Each kata presents a small problem (like a tire pressure monitoring system or ticket dispenser) with poorly designed code, challenging developers to write unit tests and refactor it to follow SOLID principles. It's a hands-on way to learn how to improve code testability and design.
Software developers and engineering teams looking to improve their refactoring skills, understand SOLID principles in practice, or practice test-driven development with challenging legacy code scenarios.
Unlike generic coding challenges, these katas are specifically crafted to teach SOLID principles and testability through realistic, themed exercises with intentionally flawed code, supported by examples and solutions in multiple languages.
Several code katas on a racing car theme
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Each kata presents intentionally poorly structured code that mimics common issues in inherited codebases, as described in the README's goal to simulate legacy code for practice.
Exercises explicitly highlight violations of SOLID principles and guide refactoring to correct them, evidenced by instructions to 'identify which SOLID principles are not being followed.'
Support for C#, Java, JavaScript, and Python allows teams with different tech stacks to participate, as noted in the Key Features and README references to language-specific solutions.
Includes follow-up exercises like HtmlPagesConverter for more challenging scenarios, providing a growth path for learners beyond basic refactoring.
Some exercises, such as TelemetrySystem and Leaderboard, are marked as 'not yet migrated' in the README, limiting the available content and creating gaps in the learning sequence.
The katas are being split into separate GitHub repos (e.g., TirePressure-Kata), which complicates access and setup compared to a unified repository, as mentioned in the 'Getting the code' section.
Primarily focuses on unit testing and SOLID principles, lacking coverage of broader software design aspects like integration testing, performance optimization, or alternative design patterns beyond the provided exercises.