Immer, oder:
- Vor einer Erweiterung des Funktionsumfangs
- Nach erfolgreichen Tests einer stabilen Version
- Beim Auftreten wiederkehrender Bugs in bestimmten Modulen
- Wenn der Code schwer lesbar oder schwer testbar wird
- Nach Code-Reviews, die auf Designprobleme hinweisen