Skip to content

tedyoung/expense-report-template

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Expense Report Kata

This is the Java-only version of the kata from https://github.com/christianhujer/expensereport. The relevant parts of the README are below.

Changes I (Ted aka jitterted) Made

I've updated it to the latest JUnit, added the AssertJ assertion library, and bumped the Java version to 17. I also split the classes/enums into separate files and added a starter test method.

Commit Notation

You might try using Arlo Belshee's Commit Notation and make the smallest commits you can. See https://github.com/RefactoringCombos/ArlosCommitNotation/blob/main/Learning%20Path.md on how to get started.


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

  1. 📚 Read the code to understand what it does and how it works.
  2. 🦨 Read the code and check for design and code smells. Make a list of all code and design smells that you find.
  3. 🧑‍🔬 Analyze what you would have to change to implement the new requirement without refactoring the code.
  4. 🧪 Write a characterization test. Expand your list of code and design smells. Add those smells that you missed earlier and discovered now because they made your life writing a test miserable.
  5. 🔧 Refactor the code.
  6. 🔧 Refactor the test.
  7. 👼 Test-drive the new feature.

Other plans

  • Make sure that all languages are providing the identical challenge. To be practical, this will require the removal of the timestamp side-effect.
  • Provide the time-stamp side-effect on a separate branch.
  • Provide a test setup (without test) on a separate branch so that folks can choose whether they want to include the setup work in the kata or not.
  • Provide a level 2 challenge for creating an HTML report besides the Plain Text report.

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. However, he seems to not be the original author (https://twitter.com/unclebobmartin/status/1537063143326855176?s=20&t=lh_vVb9jUQmY6PYG50974w) 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.

About

The Expense Report legacy code refactoring kata (adapted from https://github.com/christianhujer/expensereport).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages