In primo luogo
Porsi la domanda "qual è lo scopo unico di questa classe?". Senza aderire al principio di responsabilità unica, le classi e i metodi di denominazione diventano molto difficili. Se non è possibile rispondere a questa domanda, potrebbe essere necessario ripensare a ciò che si desidera fare alla classe e considerare la possibilità di separare le preoccupazioni. Questo renderà più facile nominare
In secondo luogo
Hai uno schema per il modo in cui dai il nome alle tue classi? Forse prova a guardare alcuni schemi di denominazione comuni, ad esempio il modello, che diventa molto più facile da seguire una volta che hai 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 invia un messaggio di successo a Twitter? Prova a refactoring.
In terzo luogo
Capisco da dove vieni, e mi sono già trovato in una situazione simile prima. Forse prova ad arricchire la tua classe con alcune funzionalità, con un nome temporaneo per cominciare. Con qualsiasi buon IDE o refactoring assitant, la rinomina della classe dovrebbe essere un'azione con un clic, quindi inizialmente non è necessario che il nome della classe sia permanente! Ciò ti aiuterà sia a superare il tuo blocco OCD, sia a dare al tuo subconscio il tempo di elaborarlo un po 'oltre.
Finalmente e leggermente fuori tema
Ho avuto un momento lightbulb in un lavoro che stavo facendo l'altro giorno, implementando un sistema non critico, e stavo spendendo un bel po 'di tempo giocando con diversi nomi di classi ecc ... Nome delle tue interfacce in base alla funzionalità , dai un nome alle tue classi in base alla loro specifica implementazione ... Ad esempio, potresti essere tentato di avere IXMLParser e XMLParser, ma cosa succede quando l'input cambia in JSON? Prova invece IInputParser, in questo modo puoi creare classi concrete XMLParser e JSONParser che implementano entrambi IInputParser in modi diversi.