Designing software is hard, so it’s unlikely that your first thoughts about how to structure a module or system will produce the best design.
Echoing george polya here (in How to Solve It) about when to start working on the problem; and even when you do find solution, you should review it and attempt to simplify the steps you needed to take to solve it.