To be doing refactoring right, the changes should so obviously be behavior-preserving that you would trust them even if you don't have any tests. Of course, you should have tests and, if you do, you should run them. However, that is the bar a change must clear to be a good refactoring step.
In this workshop, a little time is spent explaining the principles of refactoring. Most of the time is either spent on refactoring katas (instructor-led practice sessions following a rigid plan) or open-ended exercises wherein attendees spend time breaking seemingly big design changes into sequences of small transformations.
This can be a one, two, or three day workshop.
Day 1 - Focus: Extract Method & Split Class
- Refactoring basics (what refactoring is an how automated tools play a role).
- Morning refactoring kata.
- Afternoon refactoring exercise.
Day 2 - Focus: Sprout Class & Move Method
- Morning refactoring kata.
- Afternoon refactoring exercise.
Day 3 - Focus: Refactoring to the Open-Closed Principle
- Refactoring to introduce abstractions.
- Morning refactoring kata.
- Afternoon refactoring exercise.