Was ist das Gegenteil von initialize (oder init)? [geschlossen]

94

Der Begriff wird als Methodenname verwendet. Die Methode wird aufgerufen, wenn ein Teil der Benutzeroberfläche ausgeblendet (oder entfernt) ist. Sie wird verwendet, um die Werte auf die Standardwerte zurückzusetzen und Objekte zu entsorgen, die nicht mehr verwendet werden.

Mögliche Namen sind: freigeben, entfernen, entsorgen, löschen usw.

Welches ist Ihrer Meinung nach am besten geeignet?

Gabriel Diaconescu
quelle
1
Zerstören? (
Benötigen Sie
31
Ich kann nicht erkennen, dass dies nicht konstruktiv ist. Ein kurzer Scan der folgenden Antworten zeigt, dass viele Entwickler keine eindeutigen Antonyme erhalten. IMO-Methodennamen sind sehr wichtig und "initialisieren" hat kein eindeutiges Antonyme, ist jedoch ein gebräuchlicher und nützlicher Begriff.
Earcam
2
Leider kann ich keine Antwort mehr hinzufügen, da die Frage geschlossen wurde (wie gesagt: Wie ist das nicht konstruktiv?), Also werde ich meine Antwort hier hinzufügen. Die kurze, kommentarfreundliche Form lautet: InitializeNur verwenden, wenn Sie kein Antonyme benötigen! Falls Sie ein anderes Verb benötigen, wählen Sie es aus (meistens gibt es eine aussagekräftigere Alternative). Als weitere Referenz stelle ich meine Liste mit Antonyme für Programmierer bei GitHub zur Verfügung.
Max Truxa
3
Ich fand die Antworten auf diese Frage sehr hilfreich, als ich genau die gleiche Frage hatte. Es hätte nicht geschlossen werden dürfen.
Ian Goldby
3
Ich stimme zu ... das Schließen dieser Frage ist überhaupt nicht hilfreich.
harald

Antworten:

80

Ich benutze :

  • initialisieren()
  • kündigen()

Ich finde es angemessener:

  • Es ist schwer, es im Code nicht zu sehen, da es sich um beide langen Wörter handelt (ich benutze kein Init)
  • es ist korrekt englisch (AFAIK)
  • in meinem kopf vermeidet terminate mehrdeutigkeiten. Es stimmt nicht überein mit begin (was passt zu end), start (was passt zu stop), create (was passt zu destroy), setup (was passt zu unset), load (was passt zu unload) usw.

Einige Leute finden es jedoch eine Geschmacksfrage.

Klaim
quelle
6
+1 für terminate(). Ich bin der Meinung, dass dies im Allgemeinen eindeutig ist und möglicherweise in allen Anwendungsfällen sinnvoll angewendet werden kann.
Ben Hocking
9
Ich bin mit "terminate" völlig einverstanden. Alle anderen Vorschläge beziehen sich auf Wörter mit genauen, bekannten Antonyme. zerstören (erstellen), zerreißen (einrichten), schließen (öffnen), freigeben (erwerben) usw. Überraschend, wie viele Entwickler dies nicht sehen.
Earcam
Defenestrate. Das ist es, was ich mit Objekten mache, wenn ich mit ihnen fertig bin. (Aber Terminate wäre meine zweite Wahl.)
Nicki
3
@ Nicki Sieht teuer aus, um bei jeder Zerstörung von Objekten
Windows
Wie earcam wies darauf hin: Es ist set up(was passt tear down) nicht setup(es gibt kein solches Verb in der englischen Sprache).
Max Truxa
25

Ich gehe in der Regel entweder mit Finalisieren, Zerstören oder Beenden, je nachdem, was die Objektfunktion ist.

Für den Fall, den Sie beschreiben, ist Finalize das, was ich basierend auf meinem Schema tun würde.

Brian Dishaw
quelle
Leider könnte 'Finalize' entweder ein Synonym oder ein Antonyme von 'Initialize' sein, so dass ich denke, dass es im Allgemeinen eine schlechte Wahl wäre. 'Destroy' und 'Terminate' sind jedoch Konkurrenten. Unter mw.com/dictionary/finalize finden Sie die Definition "In endgültiger oder fertiger Form". Ich habe sogar gesehen, dass es so im Code verwendet wird. Das heißt, das Finalisieren eines Objekts ist der letzte Schritt seiner Initialisierung. Im Gegensatz dazu verfügt die Object-Klasse von Java über eine finalize()Methode, die keine weiteren Verweise auf das Objekt anzeigt.
Ben Hocking
@BenHocking Ich denke du nimmst das "in endgültige oder fertige Form bringen" falsch. Für mich bedeutet dies, dass Sie mit dem Objekt fertig sind und alle Eigenschaften bereinigt / zurückgesetzt werden müssen. Dies ist, was OP sagt, dass er tun möchte. Ich denke, diese Definition beweist meinen Fall.
Brian Dishaw
Auch irgendwelche Rückmeldungen, warum die Ablehnung? (Ich gehe davon aus, dass es nicht @BenHocking war, da er nicht angab, dass er der Abwähler war)
Brian Dishaw
a) Sie haben Recht, dass ich nicht abgestimmt habe. Ihr Vorschlag ist vernünftig und ich halte diese Diskussion für nützlich. b) Ich habe gesehen, wie finalize () genau in dem von mir angegebenen Sinne verwendet wurde. Beispielsweise wurde in einer Klasse, die die Delauney-Triangularisierung berechnet, nach dem Hinzufügen aller Punkte finalize () aufgerufen, um einige zusätzliche Berechnungen durchzuführen, bevor die Ergebnisse daraus verwendet werden konnten. In diesem Fall wurde angezeigt, dass das Objekt nicht mehr für Änderungen geöffnet war, aber weiterhin für die Verwendung verfügbar war, dh um die Ergebnisse der Triangularisierung abzurufen.
Ben Hocking
14

Ich mag releasefür eine Methode, die Objekte und andere Ressourcen entsorgt (zB als Vorbereitung für die Zerstörung). Ich würde resetfür eine Methode wählen , die Werte auf Standard zurücksetzt.

Wenn der "Standard" -Status keine Ressourcen erfordert, resetkann er möglicherweise anrufen release, um diesen Teil seiner Operationen auszuführen.

kommendes Gewitter
quelle
6

close()

Bisher hat noch niemand close () vorgeschlagen. Java 7 verfügt über eine neue Funktion zum Testen von Ressourcen. Eine Klasse, die automatisch bereinigt wird, muss java.lang.AutoCloseable implementieren, das eine einzige close () -Methode hat. shutdown () oder cleanup () könnten auch gut sein.

Nicht finalize()

finalize () bedeutet etwas spezielles für den Garbage Collector in Java, und die Funktionsweise ist etwas seltsam. Ich würde mich von finalize () fernhalten, es sei denn, Sie möchten genau das, was Java mit finalize () macht.

GlenPeterson
quelle
2
Sie machen einen gültigen Punkt über finalize () in Java ... aber das OP zeigte nirgendwo an, dass ich gesehen habe, dass sich die Frage speziell mit Java befasst, und nicht mit irgendeiner anderen OO-Sprache mit "Methodennamen" (z. B. C ++).
EliSko
In C # Finalizewird verwendet, um Instanzen von Klassen zu zerstören.
Olivier Jacot-Descombes
4

Ich mag 'zerstören'. Könnte nicht klarer sein, es sei denn, Sie schreiben ein Videospiel oder etwas.

Eliot Ball
quelle
4
Meiner Meinung nach wird "Zerstören" mit "Erstellen" kombiniert.
EliSko
4

Ich würde sagen, es hängt davon ab, ob die Aktion optional oder erforderlich ist (ohne dass Ressourcen verloren gehen) und ob die Sprache Konstruktoren / Destruktoren unterstützt. Für optionale Fälle verwende ich:

  • klar
  • zurücksetzen
  • verstecken (im UI-Kontext)

In anderen Fällen, in denen das Gegenteil erforderlich ist (in Sprachen ohne Konstruktoren / Destruktoren oder wenn der Destruktor die Ressource nicht freigibt), verwende ich:

  • Init - Fini
  • initialisieren - deinitialisieren
  • erschaffen - zerstören

In deinem Fall würde ich es vorziehen hide. Es kann immer noch Speicher / Ressourcen freigeben, wenn es möchte - das Wichtigste ist, dass es optional ist, dh dass der Destruktor sich darum kümmern würde, wenn Sie es nicht tun würden.

Oskar N.
quelle
3

Mein erster Gedanke war Abreißen, aber das wird in vielen Test-Frameworks verwendet. Finalisieren und entsorgen haben ähnliche Probleme. Zurücksetzen oder Bereinigen von beiden scheint eine gute Wahl. Durch die Neuinitialisierung wird klargestellt, dass der initialisierte Status wiederhergestellt wird. Dies ist hilfreich, wenn der Status, in den Sie zurückkehren, der ursprüngliche Status ist.

Stellen Sie einfach sicher, dass Ihr Begriff in Ihrem aktuellen Kontext nicht überladen ist.

Schild
quelle
Ich verstehe nicht, wie das ein Problem für sich ist. Zugegeben, Finalizeund Disposesind in .NET-Code. Abgesehen davon sehe ich kein Problem bei der Wiederverwendung etablierter Namen.
Konrad Rudolph
1
@KonradRudolph Die Wiederverwendung eines etablierten Namens ist in Ordnung, WENN die Konzepte sehr gut übereinstimmen. Keiner der aufgeführten Begriffe stimmt so gut mit dem überein, was er meiner Meinung nach beschreibt. Es wäre also verwirrender, da Sie den Begriff denken sehen würden, ich weiß, was das tut, und falsch liegen würden.
Melden
3

und es wird verwendet, um Werte auf die Standardeinstellungen zurückzusetzen und Objekte zu entsorgen, die nicht mehr verwendet werden.

resetscheint ein guter Begriff zu sein, wenn Sie das Objekt auf die Standardeinstellungen zurücksetzen. reinitializekönnte auch angebracht sein, wenn die Verwendung dieses Objekts der von what initializeentspricht. Es klingt so, als würde diese Methode andere Objekte entsorgen , nicht das Objekt, das die Nachricht empfängt. In diesem Fall sollte eine der beiden oben genannten Methoden in Ordnung sein. Wenn Sie wirklich das Gegenteil tun initund den Empfänger für die Zerstörung vorbereiten, ist disposedies eine gute Wahl.

Caleb
quelle
1

http://www.wordhippo.com/what-is/the-opposite-of/initialize.html

Ich würde mit finalisieren gehen. Ich denke jedoch, dass es ein bisschen vom genauen Anwendungsfall abhängt: Wenn Sie es hauptsächlich zum Freigeben von Ressourcen, zum Schließen von Verbindungen und zum Freigeben von Dateien verwenden, ist die Freigabe sinnvoller.

Wenn Sie nach einem Begriff suchen, der allgemein verwendet oder standardisiert werden soll, würde ich einen weniger aussagekräftigen Begriff auswählen, der keine besondere Bedeutung hat, z. B. "freigeben" oder "entfernen".

Das Konzept von init vs (was auch immer) ist ähnlich (Konstruktor vs Destruktor) oder in Java finalize.

( Hinweis : Wenn die Sprache über das Konzept verfügt, Objekte zu konstruieren und zu zerstören, muss init () kaum oder gar nicht verwendet werden.)

user1063963
quelle
FYI: finalizeist in Java reserviert.
Basil Bourque
0

Wenn das Objekt, auf das die Methode angewendet wird, nicht mehr verwendet wird, würde ich nur den Standard-Destruktor verwenden. Das hört sich jedoch nicht so an, als würde ein besserer Name nicht zu allgemein, sondern eher so etwas wie das hide()Verbergen des Objekts selbst oder das hideUserInterfacePart()Verbergen zusammengesetzter Objekte.

Karl Bielefeldt
quelle