Its one thing I wish I did better when writing code. The names are either obscure or turn into sentences before I can fully express what they try to do.<p>There probably isn't a surefire way to get better at this and something that must be worked on and cultivated. But any advise pointing the way is appreciated.
Much of the problem of naming things is that the name you give them now, is unlikely to be the most appropriate name in the future. For example, your code may change, you may make other similar classes that would be more appropriate with that name, etc.<p>The strategy I use is to iterate naming, just as I would any other aspect of code. You are unlikely to want to do this as often, but if you find your current names are no longer working for you, it might be time for a change.
"There are only two hard things in Computer Science: cache invalidation and naming things." Tim Bray<p>My personal approach is to copy shamelessly. Whenever I come accross a very readable piece of code, I add it to my bookmarks. When I am stuck with naming something I go through my bookmarks and somethin inspiring always comes up.