Right now I am working on my own small project of a WPF file back up application. I have come to a point where I want to create a method that will copy files recursively from one place to another.
This is not the first time that I ask myself the question:
Should this method be a part of an existing class, or should I store it in a new class?
What bothers me the most is that if I create a new class, it will most likely consist of solely this method, so it seems like a stretch to create a whole new type for just one action. On the other hand, I believe it is a good abstraction. Copying files doesn't have much to do with a WPF window.
The example that I show here brings out a more general question. How to balance between functionality/abstraction/readability to create code where OOP principles don't obscure common sense? I am relatively new to programming, but I'd like to start following good coding practices as soon as possible, e.g. not implementing design patterns like crazy, because I have just read about them.