Naming is hard, so don't worry that you struggle, because we all do. And trust me, it never gets any easier!
Personally with the whole Controller/Manager/Helper/Util/Whatever suffix thing I tend to use the rule that if it's a convention (e.g. for an ASP.NET MVC it's convention that the controller class name ends in "Controller") then use the suffix, otherwise try like hell to avoid it. I'd much rather have a class called HttpUploader
than HttpUploadManager
.
The most important thing about naming, is that the class should do what it says. If it is a class that uploads something using HTTP then HttpUploader
describes it exactly. Using a fancy name like HttpUploadManager
doesn't tell me what it does. Does it upload the thing itself? Does it manage the upload of multiple things? I like to keep things as simple as possible, while describing the purpose of the class/method/whatever.
A good guideline I find is that if you're really struggling to name something, like you've spend ages thinking and you still can't distill what it does into a reasonable name, then you probably need to refactor whatever you're trying to name into smaller, more specific components.