zuerst
Stellen Sie sich die Frage "Was ist der einzige Zweck dieser Klasse?". Ohne das Prinzip der Einzelverantwortung einzuhalten, wird es sehr schwierig, Klassen und Methoden zu benennen. Wenn Sie diese Frage nicht beantworten können, müssen Sie möglicherweise überlegen, was die Klasse tun soll, und die Bedenken trennen. Dies erleichtert die Benennung
Zweitens
Haben Sie ein Muster für die Benennung Ihrer Klassen? Versuchen Sie vielleicht, einige gängige Namensmuster zu betrachten, zum Beispiel das Muster, das viel einfacher zu befolgen ist, wenn Sie sich oben mit SRP befasst haben. Analysiert Ihre Klasse XML? Versuchen Sie XMLParser. Analysiert es XML, erstellt Domänenmodelle, um die Eingabe darzustellen, speichert sie in der Datenbank und sendet dann eine Erfolgsmeldung an Twitter? Versuchen Sie es mit Refactoring.
Drittens
Ich verstehe, woher du kommst, und war schon einmal in einer ähnlichen Situation. Versuchen Sie vielleicht, Ihre Klasse mit einigen Funktionen zu versehen, zunächst mit einem temporären Namen. Bei jeder guten IDE oder jedem Refactoring-Assistenten sollte das Umbenennen der Klasse mit einem Klick erfolgen. Das, was Sie Ihrer Klasse zunächst nennen, muss also nicht dauerhaft sein! Dies hilft Ihnen, Ihren OCD-Block zu überwinden und Ihrem Unterbewusstsein Zeit zu geben, ihn ein wenig weiter zu verarbeiten.
Endlich und etwas abseits des Themas
Ich hatte einen Moment mit einer Glühbirne in einer Arbeit, die ich neulich erledigte, als ich ein unkritisches System implementierte, und ich verbrachte eine ganze Weile damit, mit verschiedenen Namen von Klassen usw. herumzuspielen. Benennen Sie Ihre Schnittstellen entsprechend der Funktionalität, benennen Sie Ihre Klassen entsprechend ihrer spezifischen Implementierung ... Zum Beispiel könnten Sie versucht sein, IXMLParser und XMLParser zu haben, aber was passiert, wenn sich Ihre Eingabe in JSON ändert? Versuchen Sie stattdessen IInputParser. Auf diese Weise können Sie konkrete Klassen XMLParser und JSONParser erstellen, die beide IInputParser auf unterschiedliche Weise implementieren.