ExpenseReport
The ExpenseReport legacy code refactoring kata in various languages.
This is an example of a piece of legacy code with lots of code smells. The goal is to support the following new feature as best as you can:
- Add Lunch with an expense limit of 2000.
Process
- π Read the code to understand what it does and how it works.
- 𦨠Read the code and check for design smells.
- π§βπ¬ Analyze what you would have to change to implement the new requirement without refactoring the code.
- π§ͺ Write a characterization test. Take note of all design smells that you missed that made your life writing a test miserable.
- π§ Refactor the code.
- π§ Refactor the test.
- πΌ Test-drive the new feature.
Supported Languages
The ExpenseReport example currently exists in the following languages:
Credits
I first encountered the ExpenseReport example during a bootcamp at Equal Experts. I also have seen the ExpenseReport example being used by Robert "Uncle Bob" C. Martin. I have tried to research its origins but so far I have failed. If you know who has first come up with this example, please get in touch with me.