Theatrical players refactoring Kata
Kata based on the work from Emily Bache.
Objectives
Learn how to refactor “legacy” code
Practice OOP Design Patterns
Practice FP concepts
How to
Clone this repository : https://github.com/ythirion/Theatrical-Players-Refactoring-Kata
Exercise
Add an HTML output with the same information
Facilitation
What do you think about this code ?
Will it be easy to do the exercise ?
Why ?
Identify code smells
Does it break any S.O.L.I.D principles ?
How to start ?
"Before you start refactoring, make sure you have a solid suite of tests. Theses tests must be self-checking." - Martin Fowler
Which kind of tests can we do ?
The code already exists and works :
Easiest way to add a regression test is to find some test data, exercise the code, and approve the result
Approval tests : generate output / create your golden master
We store this golden master in a file :
Approval tests : create a test
To do so we can use the library "approvaltests".
The verify is an approvaltests method that will compare the result returned by the print method and our Golden master.
Have we missed something ?
We should ask ourselves if we have covered every piece of code with our test.
To do so we have a tool : code coverage.
The Code Coverage (from IntelliJ here) shows us that the default case is not covered at the moment.
So let's add a new test :
Are we confident enough in our tests ?
To check this we can check the quality of our tests by using a concept called mutation testing.
Improve your test quality with Mutation testingYou can use tools like pitest (for Java) or stryker (for C#, Javascript, Scala).
Now we are confident enough, let's do the exercise.
2 ways of refactoring
To go further
Base artcile from Emily Bache : https://www.praqma.com/stories/refactoring-kata/
Approval Tests : https://approvaltests.com/
Strategy pattern : https://refactoring.guru/design-patterns/strategy
Facilitator slide deck :
Last updated