How do you know when to refactor code out into a new class? It starts with a hunch. You might notice that some logic had acquired a distinct shape relative to the code around it. You get this thought before the new code has a name or even a description, and now you can start to play it. It's like this in the general idea-space too.