Qual è il contrario di inizializzare (o init)? [chiuso]


94

Il termine verrà utilizzato come nome del metodo. Il metodo viene chiamato quando una parte dell'interfaccia utente è nascosta (o rimossa) e viene utilizzata per ripristinare i valori predefiniti e disporre oggetti che non verranno più utilizzati.

I nomi possibili sono: rilasciare, rimuovere, eliminare, cancellare ecc.

Quale pensi sia il più appropriato?


1
Destruct? (servono altre lettere)
Deiwin,

31
Non riesco a vedere come questo non sia costruttivo, una rapida scansione delle risposte sotto mostra che molti sviluppatori non ottengono contrari. I nomi dei metodi IMO sono molto importanti e "inizializzare" non ha un chiaro antonimo, ma è un termine comune e utile.
earcam

2
Purtroppo non posso più aggiungere una risposta da quando la domanda è stata chiusa (come diceva earcam: in che modo non è costruttivo?), Quindi aggiungerò la mia risposta qui. La forma breve e favorevole ai commenti è questa: utilizzare Initializesolo se non è necessario un antonimo! Se ne hai bisogno, seleziona un altro verbo (il più delle volte esiste un'alternativa più descrittiva). Per ulteriori riferimenti sto fornendo il mio elenco di contrari per i programmatori di GitHub.
Max Truxa,

3
Ho trovato le risposte molto utili quando avevo esattamente la stessa domanda. Non avrebbe dovuto essere chiuso.
Ian Goldby,

3
Sono d'accordo ... chiudere questa domanda non è affatto utile.
Harald,

Risposte:


80

Io uso :

  • inizializzare()
  • terminare()

Lo trovo il più appropriato:

  • è difficile non vederlo nel codice, perché sono entrambe parole lunghe (non uso init)
  • è l'inglese corretto (AFAIK)
  • nella mia testa, terminare evita l'ambiguità. Non corrisponde a inizio (che corrisponde alla fine), inizio (che corrisponde alla fine), creazione (che corrisponde alla distruzione), impostazione (che corrisponde alla non impostata), caricamento (che corrisponde alla scarica) ecc.

Tuttavia, alcune persone potrebbero trovarlo una questione di gusti.


6
+1 per terminate(). Ritengo che sia generalmente inequivocabile e probabilmente ragionevolmente applicabile in tutti i casi d'uso.
Ben Hocking,

9
Sono completamente d'accordo con "terminare" tutti gli altri suggerimenti sono per parole con contrari esatti e ben noti; distruggere (creare), tearDown (setUp), chiudere (aprire), rilasciare (acquisire), ecc. Sorprendente quanti sviluppatori non riescono a vederlo.
earcam

Defenestrare. Questo è quello che faccio con gli oggetti quando ho finito con loro. (Ma Terminate sarebbe la mia seconda scelta.)
Nicki

3
@Nicki Sembra costoso dover reinstallare Windows alla distruzione di ogni oggetto ...
Klaim

Come sottolineato da earcam : è set up(che corrisponde tear down) non setup(non esiste un verbo simile in lingua inglese).
Max Truxa,

25

Di solito vado con Finalizza, Distruggi o Termina a seconda della funzione degli oggetti.

Per il caso che descrivi, Finalize è quello che vorrei seguire in base al mio schema.


Sfortunatamente, "Finalizzare" potrebbe essere un sinonimo o un inno di "Inizializza", quindi penso che sarebbe una scelta sbagliata in generale. 'Distruggi' e 'Termina' sono contendenti, tuttavia. Vedi mw.com/dictionary/finalize per la definizione che dice "mettere in forma finale o finita". L'ho anche visto usato in questo modo nel codice. Vale a dire, finalizzare un oggetto è l'ultimo passo nella sua inizializzazione. Al contrario, la classe Object di Java ha un finalize()metodo che non indica più riferimenti all'oggetto.
Ben Hocking,

@BenHocking Penso che tu stia prendendo il "mettere in forma definitiva o finita" nel modo sbagliato. Per me, questo significa che hai finito con l'oggetto ed è tempo di ripulire / ripristinare tutte le proprietà. Questo è ciò che OP sta dicendo che vuole fare. Quindi penso che questa definizione dimostri il mio caso.
Brian Dishaw,

Inoltre, qualsiasi feedback sul perché il downvote? (Suppongo che non fosse @BenHocking poiché non ha indicato di essere il downvoter)
Brian Dishaw,

a) Hai ragione, non ho votato in negativo. Il tuo suggerimento è ragionevole e penso che questa discussione sia utile. b) Ho visto finalize () usato esattamente nel senso che ho indicato. Ad esempio, in una classe che calcola la triangolarizzazione di Delauney, dopo che tutti i punti sono stati aggiunti, è stato chiamato finalize () per eseguire alcuni calcoli aggiuntivi prima di poter utilizzare i risultati. In tal caso, indicava che l'oggetto non era più aperto per la modifica, ma era ancora disponibile per l'uso, ovvero per ottenere i risultati della triangolarizzazione.
Ben Hocking,

14

Mi piace releaseun metodo che elimina oggetti e altre risorse (ad es. Come preparazione alla distruzione). Vorrei scegliere resetun metodo che ripristina i valori predefiniti.

Se lo stato "predefinito" non richiede alcuna risorsa, resetpotrebbe essere possibile chiamare releaseper eseguire quella parte delle sue operazioni.


6

close()

Nessuno ha ancora proposto close (). Java 7 ha una nuova funzione "prova con risorse". Una classe che viene ripulita automaticamente deve implementare java.lang.AutoCloseable che ha un solo metodo close (). anche shutdown () o cleanup () potrebbero essere buoni.

Non finalize()

finalize () significa qualcosa di specifico per il Garbage Collector in Java, e il modo in cui funziona è un po 'strano. Starei lontano da finalize () a meno che tu non voglia esattamente ciò che Java fa con finalize ().


2
Fai un punto valido su finalize () in Java ... ma l'OP non ha indicato da nessuna parte che ho visto che la domanda riguardava specificamente Java, e nessun altro linguaggio OO con "nomi di metodi" (ad esempio, C ++).
EliSko,

In C #, Finalizeviene utilizzato per distruggere istanze di classi.
Olivier Jacot-Descombes,

4

Mi piace molto "distruggere". Non potrebbe essere più chiaro se non stai scrivendo un videogioco o qualcosa del genere.


4
A mio avviso, "distruggere" è associato a "creare".
EliSko,

4

Direi che dipende se l'azione è facoltativa o richiesta (senza perdite di risorse) e se il linguaggio supporta costruttori / distruttori. Per i casi opzionali utilizzo:

  • chiaro
  • Ripristina
  • nascondi (nel contesto dell'interfaccia utente)

In altri casi in cui è richiesta l'azione opposta (in lingue senza costruttori / distruttori o quando il distruttore non rilascia la risorsa), utilizzo:

  • init - fini
  • inizializza - deinizializza
  • creare - distruggere

Nel tuo caso penso che preferirei hide. Può comunque rilasciare memoria / risorse se lo desidera: l'importante è che sia facoltativo, ovvero che il distruttore se ne occuperebbe se non lo fosse.


3

Il mio primo pensiero è stato demolito, ma è utilizzato in molti framework di test. Finalizzare e smaltire hanno problemi simili. Ripristina o ripulisci entrambi sembrano buone scelte. Reinizializza chiarisce che torna allo stato inizializzato, il che sarebbe positivo se lo stato in cui torni è lo stato iniziale.

Assicurati solo che il tuo termine non sia sovraccarico nel tuo contesto attuale.


Non vedo come questo sia un problema in sé. Concesso Finalizee Disposesono disponibili nel codice .NET. A parte questo, non vedo alcun problema con il riutilizzo dei nomi stabiliti.
Konrad Rudolph,

1
@KonradRudolph Riutilizzare un nome stabilito va bene, SE i concetti si allineano molto bene. Nessuno dei termini che ho elencato si allinea così bene con quello che ho capito che sta descrivendo. Quindi sarebbe più confuso dal momento che vedresti il ​​termine pensare, so cosa fa ed essere sbagliato.
Firma il

3

e viene utilizzato per ripristinare i valori predefiniti e disporre gli oggetti che non verranno più utilizzati.

resetsembra un buon termine se stai ripristinando le impostazioni predefinite dell'oggetto. reinitializepotrebbe anche essere appropriato se l'uso di questo oggetto è simile a quello che initializefa. Sembra che questo metodo eliminerà altri oggetti, non quello che sta ricevendo il messaggio, nel qual caso uno dei precedenti dovrebbe andare bene. Se stai davvero facendo l'opposto inite stai preparando il ricevitore a essere distrutto, disposesarebbe una buona scelta.


1

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

Vorrei andare con finalizzare. Tuttavia, penso che dipenda un po 'dall'esatto caso d'uso: ad esempio, se lo usi principalmente per rilasciare risorse, chiudere connessioni, file, la versione sarebbe più significativa.

Se stai cercando un concetto per uso generale, o standardizzato, sceglierei alcuni meno significativi, qualcosa senza un significato speciale come rilascio o rimozione.

Il concetto di init vs (qualunque cosa) è simile a (costruttore vs distruttore), o in java finalize.

( Nota : se il linguaggio ha il concetto di costruzione e distruzione di oggetti, è poco o nessun bisogno di usare init ().)


Cordiali saluti: finalizeè riservato in Java.
Basil Bourque,

0

Se l'oggetto su cui viene chiamato il metodo cesserà di essere utilizzato, utilizzerei semplicemente il distruttore standard. Non sembra il caso, quindi, piuttosto che diventare troppo generico, un nome migliore è probabilmente qualcosa come hide()se l'oggetto stesso fosse nascosto o hideUserInterfacePart()se gli oggetti composti fossero nascosti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.