¿Qué es lo opuesto a initialize (o init)? [cerrado]

94

El término se usará como nombre del método. Se llama al método cuando una parte de la interfaz de usuario está oculta (o se elimina) y se usa para restablecer los valores predeterminados y eliminar objetos que ya no se usarán.

Los nombres posibles son: liberar, eliminar, eliminar, borrar, etc.

¿Cuál crees que es el más apropiado?

Gabriel Diaconescu
fuente
1
Destruir? (necesita más cartas)
Deiwin
32
No puedo ver cómo esto no es constructivo, un análisis rápido de las respuestas a continuación muestra que muchos desarrolladores no entienden los antónimos. Los nombres de métodos de la OMI son muy importantes y "inicializar" no tiene un antónimo claro, pero es un término común y útil.
earcam
2
Lamentablemente, ya no puedo agregar una respuesta ya que la pregunta se cerró (como dijo earcam: ¿cómo es que esto no es constructivo?), Así que agregaré mi respuesta aquí. La forma corta y fácil de comentar es esta: ¡Úselo Initializesolo si no necesita un antónimo! En caso de que necesite uno, seleccione otro verbo (la mayoría de las veces hay una alternativa más descriptiva). Para mayor referencia, proporciono mi lista de antónimos para programadores en GitHub.
Max Truxa
3
Las respuestas a esto me resultaron muy útiles cuando tenía exactamente la misma pregunta. No debería haber sido cerrado.
Ian Goldby
3
Estoy de acuerdo ... cerrar esta pregunta no es útil en absoluto.
harald

Respuestas:

80

Yo suelo :

  • inicializar()
  • Terminar()

Me parece más apropiado:

  • es difícil no verlo en el código, porque son palabras largas (no uso init)
  • es inglés correcto (AFAIK)
  • en mi cabeza, terminar evita la ambigüedad. No coincide con el inicio (que coincide con el final), el inicio (que coincide con la detención), la creación (que coincide con la destrucción), la configuración (que coincide con el desarmado), la carga (que coincide con la descarga), etc.

Sin embargo, algunas personas podrían considerarlo una cuestión de gustos.

Klaim
fuente
66
+1 para terminate(). Creo que generalmente no es ambiguo y probablemente sea razonablemente aplicable en todos los casos de uso.
Ben Hocking
99
Estoy totalmente de acuerdo con "terminar" todas las demás sugerencias son para palabras con antónimos exactos y conocidos; destruir (crear), desgarrar (configurar), cerrar (abrir), liberar (adquirir), etc. Sorprendente cuántos desarrolladores no pueden ver esto.
earcam
Defenestrate. Eso es lo que hago con los objetos cuando termino con ellos. (Pero Terminar sería mi segunda opción.)
Nicki
3
@Nicki Parece costoso tener que reinstalar ventanas en cada destrucción de objeto ...
Klaim
Como señaló earcam : es set up(que coincide tear down) no setup(no existe tal verbo en inglés).
Max Truxa
25

Por lo general, utilizo Finalizar, Destruir o Terminar según la función de los objetos.

Para el caso que describas, Finalizar es con lo que iría según mi esquema.

Brian Dishaw
fuente
Desafortunadamente, 'Finalizar' podría ser un sinónimo o un antónimo de 'Inicializar', por lo que creo que sería una mala elección en general. Sin embargo, 'Destruir' y 'Terminar' son contendientes. Consulte mw.com/dictionary/finalize para ver la definición que dice "poner en forma final o final". Incluso he visto que se usa de esta manera en el código. Es decir, finalizar un objeto es el último paso en su inicialización. Por el contrario, la clase Object de Java tiene un finalize()método que indica que no hay más referencias al objeto.
Ben Hocking
@BenHocking Creo que está tomando el "poner en forma final o final" de la manera incorrecta. Para mí, esto significa que ha terminado con el objeto y es hora de limpiar / restablecer todas las propiedades. Esto es lo que OP dice que quiere hacer. Así que creo que esa definición prueba mi caso.
Brian Dishaw
Además, ¿algún comentario sobre por qué el voto negativo? (Asumo que no fue @BenHocking ya que no indicó que era el
votante negativo
a) Tienes razón en que no voté en contra. Su sugerencia es razonable y creo que esta discusión es útil. b) He visto finalize () exactamente en el sentido que indiqué. Por ejemplo, en una clase que calcula la triangularización de Delauney, después de que se agregaron todos los puntos, se llamó a finalize () para hacer un cálculo adicional antes de que los resultados se pudieran usar. En ese caso, indicó que el objeto ya no estaba abierto para modificación, pero aún estaba disponible para su uso, es decir, para obtener los resultados de la triangularización.
Ben Hocking
14

Me gusta releaseun método que disponga de objetos y otros recursos (por ejemplo, como preparación para la destrucción). Elegiría resetun método que restablezca los valores predeterminados.

Si el estado "predeterminado" no requiere ningún recurso, es resetposible que pueda llamar releasepara realizar esa parte de sus operaciones.

tormenta
fuente
6

close()

Nadie ha propuesto cerrar () todavía. Java 7 tiene una nueva característica de "probar con recursos". Una clase que se limpia automáticamente tiene que implementar java.lang.AutoCloseable que tiene un único método close (). shutdown () o cleanup () también podría ser bueno.

No finalize()

finalize () significa algo específico para el recolector de basura en Java, y la forma en que funciona es un poco extraña. Me mantendría alejado de finalize () a menos que quieras exactamente lo que Java hace con finalize ().

GlenPeterson
fuente
2
Haces un punto válido sobre finalize () en Java ... pero el OP no indicó en ningún lado que vi que la pregunta se refería específicamente a Java, y no a ningún otro lenguaje OO con "nombres de métodos" (por ejemplo, C ++).
EliSko
En C #, Finalizese usa para destruir instancias de clases.
Olivier Jacot-Descombes
4

Me gusta bastante 'destruir'. No podría ser más claro a menos que estés escribiendo un videojuego o algo así.

Eliot Ball
fuente
44
En mi opinión, "destruir" se combina con "crear".
EliSko
4

Diría que depende de si la acción es opcional o requerida (sin pérdida de recursos), y si el lenguaje admite constructores / destructores. Para casos opcionales utilizo:

  • claro
  • Reiniciar
  • ocultar (en el contexto de la interfaz de usuario)

En otros casos donde se requiere la acción opuesta (en lenguajes sin constructores / destructores, o cuando el destructor no libera el recurso), uso:

  • init - fini
  • inicializar - desinicializar
  • crear - destruir

En su caso, creo que preferiría hide. Todavía puede liberar memoria / recursos si lo desea; lo importante es que es opcional, es decir, que el destructor se encargaría de ello si no lo hiciera.

Oskar N.
fuente
3

Mi primer pensamiento fue derribar, pero eso se usa en muchos marcos de prueba. Finalizar y desechar tienen problemas similares. Restablecer o limpiar ambos parecen buenas opciones. Reinicializar deja en claro que vuelve al estado inicializado, lo que sería bueno si el estado al que regresa es el estado inicial.

Solo asegúrese de que su término no esté sobrecargado en su contexto actual.

Firmar
fuente
No veo cómo esto es un problema en sí mismo. De acuerdo, Finalizey Disposeestán en código .NET. Aparte de eso, no veo un problema con la reutilización de nombres establecidos.
Konrad Rudolph
1
@KonradRudolph Reutilizar un nombre establecido está bien, SI los conceptos se alinean muy bien. Ninguno de los términos que enumeré se alinean tan bien con lo que entiendo que él describe. Por lo tanto, sería más confuso ya que verías el término pensar, sé lo que hace y estar equivocado.
Firmar
3

y se usa para restablecer los valores predeterminados y eliminar objetos que ya no se usarán.

resetparece un buen término si restablece el objeto a sus valores predeterminados. reinitializeTambién podría ser apropiado si el uso de este objeto es similar a lo que initializehace. Parece que este método eliminará otros objetos, no el que recibe el mensaje, en cuyo caso cualquiera de los anteriores debería estar bien. Si realmente está haciendo lo contrario inity está preparando el receptor para ser destruido, disposesería una buena opción.

Caleb
fuente
1

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

Yo iría con finalizar. Sin embargo, creo que depende un poco del caso de uso exacto: por ejemplo, si lo usa principalmente para liberar recursos, cerrar conexiones, archivos, la liberación sería más significativa.

Si está buscando una noción para uso general, o estandarizar, elegiría algo menos significativo, algo sin un significado especial como liberar o eliminar.

El concepto de init vs (lo que sea) es similar a (constructor vs destructor), o en java finalize.

( Nota : si el lenguaje tiene el concepto de construir y destruir objetos, es poca o ninguna necesidad de usar init ()).

usuario1063963
fuente
FYI: finalizeestá reservado en Java.
Basil Bourque
0

Si el objeto al que se llama el método dejará de usarse, simplemente usaría el destructor estándar. Sin embargo, eso no parece ser el caso, por lo que, en lugar de ser demasiado genérico, un mejor nombre es probablemente algo así como hide()si el objeto en sí está oculto o hideUserInterfacePart()si los objetos compuestos están ocultos.

Karl Bielefeldt
fuente