in primo luogo
Ponetevi la domanda "Qual è il solo scopo di questa classe?". Senza aderire al principio di responsabilità singola, la denominazione di classi e metodi diventa molto difficile. Se non riesci a rispondere a questa domanda, potresti dover ripensare a ciò che vuoi che faccia la classe e considerare di separare le preoccupazioni. Ciò renderà più facile nominare
in secondo luogo
Hai un modello per come dai un nome alle tue classi? Forse prova ad esaminare alcuni modelli di denominazione comuni, ad esempio il modello, che diventa molto più facile da seguire dopo aver affrontato SRP sopra. La tua classe analizza XML? Prova XMLParser. Analizza XML, crea modelli di dominio per rappresentare l'input, li mantiene nel DB e quindi pubblica un messaggio di successo su Twitter? Prova il refactoring.
In terzo luogo
Capisco da dove vieni e mi sono già trovato in una situazione simile. Forse prova a completare la tua classe con alcune funzionalità, con un nome temporaneo per cominciare. Con qualsiasi IDE valido o assistente di refactoring, rinominare la classe dovrebbe essere un'azione con un clic, quindi ciò che inizialmente nominerai la tua classe non deve essere permanente! Ciò ti aiuterà a superare il blocco OCD e a concedere al tuo subconscio il tempo di elaborarlo un po 'più avanti.
Finalmente e leggermente fuori tema
Ho avuto un momento di lampadina in qualche lavoro che stavo facendo l'altro giorno, implementando un sistema non critico, e stavo trascorrendo un bel tempo a giocare con diversi nomi di classi ecc ... Dai un nome alle tue interfacce in base alla funzionalità, dai un nome al tuo classi in base alla loro specifica implementazione ... Ad esempio, potresti essere tentato di avere IXMLParser e XMLParser, ma cosa succede quando il tuo input cambia in JSON? Prova invece IInputParser, in questo modo puoi creare classi concrete XMLParser e JSONParser che implementano entrambi IInputParser in modi diversi.