Ich bin mir nicht sicher, ob dies ein OCD-Merkmal ist oder nicht, aber ich finde, dass ich manchmal vollständig blockiert werde und nicht mehr weitermachen kann, was ich tue, wenn ich eine Klasse (oder Funktion oder einen Namespace usw.) benenne, von der ich glaube, dass sie außerhalb verwendet werden soll eines bestimmten Projekts. Eine API zum Beispiel. Oder eine Utility-Klassenbibliothek.
Wenn die Benennung nicht genau richtig ist (in meinen Gedanken), kann ich einfach nicht weitermachen ... Ich stecke fest und versuche, den richtigen Namen zu finden. Ich habe versucht, kleine Apps zu schreiben, mit denen ich sehen kann, wie die Namen aussehen, aber das scheint nicht zu helfen ...
Ich weiß, dass es keine Rolle spielen sollte, und es widerspricht jeder Programmier-Denkweise, anzunehmen, dass Sie es auf Anhieb perfekt machen würden ... Ich fühle mich einfach machtlos dafür ...
Alle Tipps / Ideen wäre sehr dankbar ...
Antworten:
Meiner Meinung nach besteht das Problem darin, nicht nur einen besseren Weg zu finden, um gute Namen zu finden, sondern auch mit dem Zwang umzugehen, dies zu tun. Wenn ich ehrlich bin, erkenne ich ein ähnliches Merkmal in mir. Namen sind schließlich wichtig, und ich mag einen guten Namen für die Konzepte, an denen ich arbeite. Sie sind jedoch nicht immer das Wichtigste.
Hier sind einige der Methoden, mit denen ich solche Dinge überwinden kann:
quelle
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.
quelle
Für mich ist es normalerweise ein Zeichen, dass das Design in meinem Kopf nicht klar ist, also mache ich mir einen Namen und gebe mir Zeit (sagen wir 2 Minuten), um einen besseren zu finden. Am Ende dieser Zeit muss ich benutze die, die ich mir zuerst ausgedacht habe. Barney, Wilma und Fred sind zunächst die Favoriten. Ich mache Dinge wie "BarniesInputParser". Die Namen sind so schlecht, dass ich mir einen besseren ausdenken oder sie später ändern muss. Sie sind auch so schlecht, dass sie einzigartig sind, was das Refactoring trivial und sicher macht, und jeder, der sich den unvollständigen Code ansieht, kann sofort erkennen, dass er unvollständig ist.
Das Wichtigste ist, dass Sie Ihrem Gehirn keine neuen Informationen geben, um den Namen zu definieren (und das Design zu klären), während Sie keine Funktionen hinzufügen. Alles, was Sie tun, ist, denselben Input auf unterschiedliche Weise wiederzugeben.
Oder mach einen Kaffee. Bevor Sie zur Maschine kommen, werden Sie es haben ...
quelle
Ich habe das vor einiger Zeit von einem Freund bekommen. Schreiben Sie auf, was Ihr Prozess tun soll. Nur eine kurze Erzählung. Nehmen Sie dann die Substantive und verwandeln Sie sie in Klassen, die Verben in Methoden und die Adverbien in Eigenschaften.
quelle