Wie nennen Sie Funktionen / Variablen / usw., wenn Ihnen kein guter Name einfällt? [geschlossen]

13

Wenn Sie eine Funktion / Variable / etc definieren und nicht sicher sind, wie Sie sie benennen sollen, wie nennen Sie sie? Wie kommst du auf einen Namen?

Wenn Sie einen temporären Namen als Tischkarte verwenden, bis Sie ihm den richtigen Namen geben, welchen temporären Namen verwenden Sie?


aktualisieren

Ich habe mit Sachen wie WILL_NAME_LATER, NEEDS_NAMEoder TO_BE_NAMED. Ich hatte gehofft, dass es eine angenommene Konvention gibt, ich hatte tatsächlich gehofft, dass meine IDE den Namen hervorheben würde, wenn ich diese angenommene Konvention verwenden würde, bis ich ihn änderte.

JD Isaacks
quelle
Seien Sie vorsichtig, wenn Sie alle Großbuchstaben für Variablennamen verwenden. Nach gängiger Konvention bedeutet dies eine globale Variable.
Schwamm
@sunpech, ich weiß, ich benutze diese Namenskonvention auch für Konstanten. Aber ich denke, die Großschreibung macht es einzigartig, also vergesse ich nicht, es umzubenennen. Ich lasse es nicht lange so.
JD Isaacks
3
Für alle Leute, die sagen, sollten Sie nie ein Problem haben, einen Namen zu finden ... Selbst Jon Skeet kann es manchmal nicht: stackoverflow.com/questions/521893/…
JD Isaacks
@ JohnIsaacks Ich denke, Sie sollten vorübergehend mutig . Zu viele Leute lesen diese Frage und machen Code zu etwas Heiligem. Ehrlich gesagt, ja, Sie können schlampigen Code INSBESONDERE schreiben, wenn Sie versuchen, etwas Wichtigeres durchzusetzen. Wir ätzen hier keinen Code in Stein.
Schwamm
1
Ich denke, die Konvention für so etwas wäre, dem Code ein TODO hinzuzufügen, mit der Erklärung, warum Sie es aktualisieren müssen. Viele Tools können diese TODOs analysieren und eine Liste aller noch zu erledigenden Aufgaben anzeigen.
Eduardo Scoz

Antworten:

29

Es ist fast unmöglich, sich keinen Namen für ein Artefakt auszudenken, das Sie entwerfen möchten. Sie mögen vielleicht nicht, welchen Namen Sie sich einfallen lassen, weil er nicht prägnant oder sexy ist, aber wenn Sie zu viel nachdenken, erhalten Sie ein Artefakt mit schlechtem Namen.

Angenommen, Sie haben etwas, das Ihnen beim Erstellen von Objekten hilft, aber Sie wissen nicht, dass dies normalerweise als Fabrik bezeichnet wird. Nennen Sie es einfach ObjectCreator. Es klingt stumpf, aber zumindest ist es klar.

Angenommen, Sie haben ein Wörterbuch, das Hostnamen in IP-Adressen konvertiert. Nennen Sie es einfach HostnamesToIpAddresses. Sicher ist es lang, aber es sagt genau, was es tut.

Die Unfähigkeit, einen Namen für etwas zu finden, bedeutet, dass Sie nicht wissen, was es tut, was auch bedeutet, dass Sie ein größeres Problem vor sich haben.

Mark Canlas
quelle
8
Ich möchte immer Leute schlagen, die sich darüber beschweren, dass Identifikatoren zu lang sind (wenn sie nur aus drei oder vier Wörtern bestehen). Wir sollten nicht durch unsere Schreibgeschwindigkeit eingeschränkt sein, und wenn ja, sollten wir uns ABCD ansehen und lernen zu tippen!
Dash-Tom-Bang
1
+1 wegen "The inability to come up with a name for something means you don't know what it is doing". Ich denke, das ist wirklich ein wichtiger Punkt. Wenn Sie dies erkennen, können Sie Unklarheiten und Unklarheiten im Code finden.
BiAiB
34

Ich versuche immer, meinen Variablen und Funktionen gute Namen zu geben .

Wenn mir kein guter Name einfällt, werde ich mich mit einem guten Namen zufrieden geben .

Wenn ich keinen guten Namen finden kann, verwende ich einen guten Namen .

Ich war in 15 Jahren professioneller Programmierung nie in der Lage, einen anständigen Namen zu finden.

Portman
quelle
6
+1 für poetisch zu sein.
Schwamm
1
... jedoch vor 15 Jahren und 6 Monaten wurde Microsoft Bob geboren.
VirtuosiMedia
12

Wenn Sie sich keinen guten Namen für eine Variable oder Funktion vorstellen können, verstehen Sie entweder nicht, was Sie tun, oder Sie haben ein schlechtes Design. In beiden Fällen kann das Schlagen eines beliebigen Namens wie "x" (es sei denn, Sie haben es mit Koordinaten zu tun) Ihr Dilemma nicht lösen. es wird es nur noch schlimmer machen und der Schmerz, größer zu bleiben.

gablin
quelle
8
Ich stimme dir nicht zu. Entwickler haben nicht immer ein umfassendes Verständnis der Geschäftsterminologie. Selbst der Kunde ist möglicherweise nicht in der Lage, die Terminologie während der Anforderungserfassung zu vermitteln - geschweige denn manchmal sogar sein eigenes Geschäft zu verstehen! Dies hindert jedoch nicht daran, Software zu produzieren. Es verhindert nicht, dass Prototypen erstellt werden. Oder sogar Code, der wegen mangelnden Verständnisses richtig rausgeworfen wird. In diesen Situationen muss jedoch noch Code erstellt und bereitgestellt werden.
Schwamm
3
@sunpech Entschuldigung, aber das ist ein wenig beängstigend. Versuchen Sie uns zu sagen, dass es üblich ist, zufälligen Code zu schreiben, ohne zu wissen, was er tatsächlich tut? Wenn Sie etwas nicht wissen, bemühen Sie sich, es herauszufinden, und Sie werden in Zukunft Probleme vermeiden.
Adam Byrtek
@AdamByrtek Nein, das meine ich nicht. Was ich damit sagen will ist, dass es nicht immer Sache des Entwicklers und des Teams ist, das beste Verständnis dafür zu haben, was ein Kunde will. Einige Kunden haben Schwierigkeiten, zu erklären, was sie wollen, oder wissen nicht, was sie wollen. Es passiert ein schlechter Code. Probleme treten bei Projekten auf, von schlechten Anforderungen bis hin zu unrealistischen Fristen. Das ist Realität. Es gibt keine perfekte Welt, in der ein Entwickler alle Unbekannten lösen kann, in der die Kunden perfekt sind und die Fristen korrekt sind. Für Prototypen generierter Code soll verworfen werden. Die Codierung muss jedoch noch erfolgen.
Schwamm
Fortsetzung ... Es geht nicht darum, Produktionscode oder den endgültigen Code kurz vor dem Einchecken zu erstellen. Wir sprechen darüber, wie man etwas benennt, von dem wir noch nicht das volle Verständnis haben - um zunächst mit etwas zu beginnen, das möglicherweise aus einem guten Grund unklar ist (Beispiel: Niemand im Team versteht es noch, vielleicht auch nicht sogar der Kunde). Aber die Dinge müssen sich immer noch weiterentwickeln, basierend auf dem, was bekannt ist.
Schwamm
1
@sunpech: Der einzige Ort, den ich tatsächlich gesehen foound barim Code verwendet habe, sind kleine Codeausschnitte, die zur Darstellung eines Konzepts verwendet werden. Sicher, ich stolpere auch, wenn ich mir Namen ausdenke, aber ich bin noch nie in einer so schlechten Position gelandet, wo fooes die einzig vernünftige Option war. Wenn das passieren sollte, dann weiß ich wirklich nicht, was zum Teufel ich tue und muss stattdessen zum Zeichenbrett und zum Pseudocode zurückkehren, bis ich weiß, was ich tun soll.
Gablin
5

Diese Frage und insbesondere ihre Antworten machen mir sinnlos. Jemand muss den Code pflegen, in dem Sie gerade eine Variable "Cup" genannt haben. Wenn Sie kein Glück haben, werden Sie jemand sein!

Du hast eine Variable. Es ist eine Sache. Es ist sowieso eine Sache. Und die Dinge haben Namen. So weißt du, dass es Dinge sind! Wollen Sie mir wirklich sagen, dass Sie eine Sache nach einer anderen benennen müssen, weil Sie den Namen der tatsächlichen Sache nicht finden können?

Iteratoren sollten i genannt werden. Verschachtelte Iteratoren sind wahrscheinlich ein Fehler, aber wenn Sie sie brauchen, gehen Sie der Reihe nach durch die restlichen Vokale (a, e, o, u und Gott helfen mir, ja, manchmal y).

Ansonsten nenne das Ding einfach was es ist und sei fertig damit!

Dan Ray
quelle
9
Ich muss protestieren! Es ist klar, dass der innere Iterator j und der innerhalb dieses k genannt werden sollte . Die langjährige mathematische Tradition schaut Ihnen über die Schulter!
Frank Shearar
Huh. Ich habe noch nie j und k gemacht. Ich sehe aber, dass es sinnvoll ist.
Dan Ray
8
Ein Grund, warum Dijkstra so natürlich zur Informatik passte, war, dass sein Name die drei häufigsten Iteratorvariablen in der richtigen Reihenfolge enthielt.
Glenatron
3
@glenatron: Endlich eine Möglichkeit, sich daran zu erinnern, wie man diesen Namen buchstabiert!
Konfigurator
4

Wenn ich nicht sofort einen guten Namen finden kann, verwende ich vorübergehend einen "OK" -Namen und codiere dann weiter. Zumindest wird es etwas sein, das den Gegenstand angemessen beschreibt, auch wenn er nicht perfekt ist . Fast immer, wenn ich mit dem Schreiben des ersten Entwurfs dieses bestimmten Codeabschnitts fertig bin, ist mir ein perfekterer Name eingefallen. Durch den Codierungsprozess werden meine Absichten mit dieser bestimmten Variablen klarer. (Andererseits fällt mir manchmal ein, dass die Variable zu Beginn von Anfang an schlecht konzipiert war und ich sie zugunsten von etwas anderem lösche.)

Nick Spreitzer
quelle
3

Ich nenne es so, wie ich denke, dass die Funktion es tun sollte - etwas, das mehr oder weniger die Absicht vermittelt. Sobald der Hauptteil der Funktion geschrieben ist, finde ich es offensichtlich, wie ich ihn aufrufen soll, und gehe zurück und benenne ihn bei Bedarf um.

Adam Lear
quelle
1
Dies funktioniert nicht immer, insbesondere wenn der Entwickler möglicherweise nicht mit der Terminologie oder sogar der Absicht des Unternehmens / der Branche vertraut ist. Etwas allgemeineres und offensichtlicheres sollte verwendet werden, um zu vermitteln, dass es später definiert und geändert werden muss. Das OP scheint zu fragen, wann die Absicht unbekannt ist und was anfänglich verwendet werden sollte. Wenn die Benennung etwas ist, das mehr oder weniger Absicht vermittelt, dann ist ein guter Name schon nicht mehr weit.
Schwamm
1
@sunpech Im Ernst, selbst als ich zum ersten Mal in einem Job mit einer ziemlich spezifischen Domain anfing, hatte ich keine Probleme, einen Funktionsnamen zu finden. Vielleicht muss ich einfach mehr Funktionen schreiben. :)
Adam Lear
1
@sunpech: Wie kann man eine Funktion schreiben, ohne zu wissen, was sie tut?
Konfigurator
4
@sunpech: Das habe ich nicht gesagt. Ich habe nur gesagt, dass Sie unmöglich eine Funktion schreiben können, ohne zu wissen, was sie tut. Es ist nicht möglich. Ich habe es noch nie gesehen und ich sehe nicht, wie es möglicherweise passieren könnte. Vielleicht bin ich dumm, aber wenn du eine Funktion DoFoo () benennst, was zum Teufel steckst du dann hinein?
Konfigurator
2
@sunpech: Ich habe nie gesagt, dass Namen von Anfang an 'gut' sein müssen. Ich sehe nur nicht ein, wie Sie in eine Situation geraten würden, in der Sie eine Funktion erstellen möchten, aber Sie wissen nicht, was sie tun wird.
Konfigurator
2

Foo und Bar . Da die Benennung von Funktionen / Variablen noch keine Bedeutung hat, verwende ich eine Kombination aus Foo und / oder Bar mit allem, was ich definieren möchte.

Es macht es einfach, später zu suchen / zu finden, wenn ich besser verstehe, wie es benannt werden soll.

Siehe auch Foobar auf Wikipedia .

Die Begriffe foobar, foo, bar und baz werden manchmal als Platzhalternamen (auch als metasyntaktische Variablen bezeichnet) in der Computerprogrammierung oder in der computerbezogenen Dokumentation verwendet. Sie wurden verwendet, um Entitäten wie Variablen, Funktionen und Befehle zu benennen, deren Zweck unwichtig ist und die nur zur Demonstration eines Konzepts dienen. Die Wörter selbst haben in dieser Verwendung keine Bedeutung. Foobar wird manchmal alleine verwendet; foo, bar und baz werden manchmal in dieser Reihenfolge verwendet, wenn mehrere Entitäten benötigt werden.

Schwamm
quelle
1

Stellen Sie Ihrer Funktion etwas voran und geben Sie ihr vorerst einen Best-Shot-Namen. Eine Funktion, die alle Produkte für den ausgewählten Benutzer in der Datenbank speichert, könnte beispielsweise RENAME_SaveAllProductsForTheSelectedUserToTheDatabase() sein.

HardCode
quelle
Natürlich sollten Sie in diesem Fall nur die Funktion benennenSaveAllProductsForTheSelectedUserToTheDatabase()
Konfigurator
1

Wie auch immer ich diese schwer zu benennenden Variablen nenne, ich mache einen //TODO find a better nameKommentar, damit ich später zurückgehen kann, um ihn umzubenennen

Wenn ich anfange, die Variable / Funktion / Klasse zu verwenden, finde ich normalerweise einen besseren Namen für sie.

user1041
quelle
0

Es ist am besten, bald einen guten Namen einzugeben, während Sie den Code im Auge haben, und dann zu warten, bis Sie sich später wünschen, Sie hätten ihn gut benannt!

Jon Onstott
quelle
0

Ich habe fast nie Probleme, gute, beschreibende Namen zu finden. Aber manchmal wird die Benennung ziemlich überflüssig, da die Klassen- und Variablennamen sehr ähnlich sind. WebClient webclient = neuer Webclient (uri); ... und dergleichen.

Zaz
quelle
0

Manchmal benutze ich zzzz vorübergehend.

Eine gute Regel, um Ihnen zu helfen, ist folgende:

  • Gibt es einen Booleschen Wert zurück und hat keine Nebenwirkungen: Verwenden Sie dann ein Adjektiv (beginnen Sie mit is, was), aber niemals die Zukunftsform.
  • Gibt es einen anderen Typ zurück und hat keine Nebenwirkungen: Verwenden Sie dann ein Substantiv.
  • Gibt es nichts zurück als etwas zu tun: Dann benutze ein Verb.
  • Ist es eine Klasse: Dann benutze ein Substantiv.
Strg-Alt-Delor
quelle
-1

In der Vergangenheit habe ich viel Bob verwendet , aber dies war die einzige nicht richtig benannte Variable in der Funktion / im Skript, da der Code sonst schnell unlesbar wird.

(Bob ist ein Kater aus Uni-Tagen - mit dem Aufrufen von Variablen Bob und Fred davonkommen)

Gerne benutze ich i als Zähler.

Verwenden Sie besser aussagekräftige Namen, auch wenn diese nicht kurz und bissig sind.

Dan
quelle
Ich habe mit einem Mann zusammengearbeitet, der solche Namen für seine Anwendungen und Klassen in seinen Anwendungen verwendet hat. Vielleicht war sein Code im Allgemeinen sehr schlecht.
Dash-Tom-Bang
2
@ dash-tom-band: Ich würde denken, sein Code war im Allgemeinen sehr bob.
Konfigurator
Wenn ich meinen Namen für eine Aufzählung in eine ungarische Notation einarbeiten kann, mache ich das normalerweise, auch wenn es ein bisschen langwierig ist. TPropertyEnhancmentTypeEditor = (PETEObtuse, PETEAwful, PETEDispicable);
Peter Turner
-1

Wenn ich absolut keine Ahnung habe, wie ich die Variable benennen soll, was seit über zwanzig Jahren nicht mehr passiert ist ... Namen alter Freundinnen oder Frauen, von denen ich mir wünschte, sie wären Freundinnen gewesen. Der letzte Code mit diesen Kennungen wurde vor einigen Jahren aus der Produktion entfernt.

David Thornley
quelle
-2

WorkMagic oder Abrakadabra.

Tester101
quelle
-2

bla , aber nur vorübergehend. Ich gehe immer zurück und benenne sie in gute Variablennamen um.

Jason Berkan
quelle
1
Verwenden Sie dies niemals . Schlecht.
Dynamisch
-2

Doit (), a (), b (c) xxxx () ....

Natürlich werden sie weggestaltet ... normalerweise

Preet Sangha
quelle
-3

Ich neige dazu, Sachen auf meinem Schreibtisch zu benutzen.

  • Tasse
  • Alt
  • Foo
  • b / a / c (Einzelbuchstaben-Müll)
  • alk (aussprechbarer Mehrbuchstaben-Junk)

Ich neige auch zu generischen Namen (zumindest für Funktionen):

  • Tauschen
  • Prozess
  • reviseVar
  • basteln

Dies ist jedoch für vorübergehende Dinge. Ich schwöre, nichts schafft es in das Repository, geschweige denn die Produktion.

...

Josh K.
quelle
Ich fühle mich immer schmutzig, aber manchmal ist der offensichtlichste Name für eine Methode "Go" oder "DoIt". Wann immer ich mir einen besseren Namen einfallen lassen kann, aber manchmal ist es wirklich "die Arbeit zu erledigen, die der Name des Programms impliziert, steht kurz bevor". Dies ist jedoch zu lang, um für einen Funktionsnamen verwendet zu werden. :)
Dash-Tom-Bang
@ dash-tom-bang: Aus irgendeinem Grund runsieht es viel besser aus als go. Vielleicht liegt es daran, dass wir alle möchten, dass unsere Programme schneller sind.
Konfigurator