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