Trovare nomi validi e precisi per le classi è notoriamente difficile. Fatto bene, rende il codice più auto-documentante e fornisce un vocabolario per ragionare sul codice a un livello più alto di astrazione.
Alle classi che implementano un particolare design pattern potrebbe essere assegnato un nome basato sul ben noto nome del pattern (es. FooFactory, FooFacade) e le classi che modellano direttamente concetti di dominio possono prendere i loro nomi dal dominio del problema, ma per quanto riguarda le altre classi? C'è qualcosa come il thesaurus di un programmatore a cui posso rivolgermi quando mi manca l'ispirazione e voglio evitare di usare nomi di classi generici (come FooHandler, FooProcessor, FooUtils e FooManager)?