I’ve been coding a long time and something I’ve come to realize over the last several years is that if you can’t come up with a good name for the class you’re working on, you probably have an outstanding design issue that you aren’t aware of yet. If your class includes the phrase “helper” or “util” then you need to come up with a better name. If you can’t, you’ve got a problem or you’re not really doing OOD. I’ve encountered a lot of designs filled with “Helpers” and “Utils.” I’m even guilty of writing a few in the past. But I urge you, for the sake of fellow coders everywhere, to come up with a better name and/or better design. “Helper” and “Util” don’t really tell me anything about your class other than it’s very likely to exhibit low cohesion.
If you’re writing Helpers and Utils, I bet they’re filled with static methods too. ARG!! Static methods can’t be part of interfaces which means you’ve tightly coupled yourself to a specific class, not an interface. As a result, you can’t easily write unit tests nor can you substitute a differnet implementation without renaming classes. All ugly, very ugly!!! I implore you to stop writing static methods. Object creation is highly optimized nowadays. New X().Method() is likely to be almost as (if not as) fast as X.Method(). Not that you’d really want to use that, but I’m just trying to ease you away from the static members. You will want to inject an instance of X somewhere in your run-time object hierarchy.