Qual é o oposto de inicializar (ou init)? [fechadas]


94

O termo será usado como um nome de método. O método é chamado quando uma parte da interface do usuário é oculta (ou removida) e é usada para redefinir os valores para o padrão e dispor objetos que não serão mais usados.

Os nomes possíveis são: liberar, remover, descartar, limpar etc.

Qual você acha que é o mais apropriado?


11
Destruir? (precisar de mais cartas)
Deiwin

31
Não é possível ver como isso não é construtivo. Uma rápida varredura das respostas abaixo mostra que muitos desenvolvedores não conseguem obter antônimos. Os nomes de métodos da IMO são muito importantes e "inicializar" não possui antônimo claro, mas é um termo comum e útil.
earcam

2
Infelizmente, não posso mais adicionar uma resposta desde que a pergunta foi encerrada (como o fone de ouvido disse: como isso não é construtivo?), Então adicionarei minha resposta aqui. O formulário curto e amigável para comentários é o seguinte: Use Initializeapenas se você não precisar de um antônimo! Caso você precise de um outro verbo (na maioria das vezes há uma alternativa mais descritiva). Para referência adicional, estou fornecendo minha lista de antônimos para programadores no GitHub.
precisa saber é o seguinte

3
Eu achei as respostas muito úteis quando tive exatamente a mesma pergunta. Não deveria ter sido fechado.
Ian Goldby

3
Eu concordo ... encerrar esta pergunta não ajuda em nada.
Harald

Respostas:


80

Eu uso :

  • inicializar()
  • terminate ()

Acho mais apropriado:

  • é difícil não vê-lo no código, porque são duas palavras longas (não uso init)
  • está correto inglês (AFAIK)
  • na minha cabeça, terminar evita ambiguidade. Ele não corresponde ao início (que corresponde ao final), ao início (que corresponde ao stop), à criação (que corresponde à destruição), à configuração (que corresponde à não definida), à carga (que corresponde à descarga) etc.

Algumas pessoas podem achar uma questão de gosto.


6
+1 para terminate(). Eu sinto que geralmente é inequívoco e provavelmente razoavelmente aplicável entre os casos de uso.
Ben Hocking

9
Concordo plenamente com "encerrar". Todas as outras sugestões são para palavras com antônimos exatos e conhecidos; destruir (criar), tearDown (setUp), fechar (abrir), liberar (adquirir) etc. Surpreendente quantos desenvolvedores não conseguem ver isso.
earcam

Defenestrate. É o que faço com os objetos quando acabo com eles. (Mas Terminar seria minha segunda opção.)
Nicki

3
@Nicki parece caro ter que janelas re-instalar em cada destruição objeto ...
Klaim

Como o earcam apontou: não é set up(o que corresponde tear down) setup(não existe esse verbo no idioma inglês).
precisa saber é o seguinte

25

Normalmente, eu uso Finalizar, Destruir ou Terminar, dependendo da função dos objetos.

Para o caso que você descreve, Finalize é o que eu aceitaria com base no meu esquema.


Infelizmente, 'Finalizar' pode ser um sinônimo ou antônimo de 'Inicializar', então acho que seria uma má escolha em geral. 'Destruir' e 'Terminar' são candidatos, no entanto. Consulte mw.com/dictionary/finalize para obter a definição que diz "colocar na forma final ou final". Eu já vi isso ser usado dessa maneira no código. Ou seja, finalizar um objeto é o último passo em sua inicialização. Por outro lado, a classe Object de Java possui um finalize()método que indica que não há mais referências ao objeto.
Ben Hocking

@BenHocking Acho que você está pegando o "colocar na forma final ou final" da maneira errada. Para mim, isso significa que você terminou o objeto e chegou a hora de limpar / redefinir todas as propriedades. É isso que a OP está dizendo que ele quer fazer. Então, acho que essa definição prova meu caso.
Brian Dishaw

Além disso, algum feedback sobre o motivo do voto negativo? (Estou assumindo que não foi @BenHocking desde que ele não indicam que ele era o downvoter)
Brian Dishaw

a) Você está certo que eu não votei. Sua sugestão é razoável e acho que essa discussão é útil. b) Eu vi finalize () usado exatamente no sentido que eu indiquei. Por exemplo, em uma classe que calcula a triangularização de Delauney, depois que todos os pontos foram adicionados, finalize () foi chamado para fazer algum cálculo adicional antes que os resultados pudessem ser usados ​​a partir dele. Nesse caso, indicou que o objeto não estava mais aberto para modificação, mas ainda estava disponível para uso, ou seja, para obter os resultados da triangularização.
Ben Hocking

14

Gosto releasede um método que descarta objetos e outros recursos (por exemplo, como preparação para a destruição). Eu escolheria resetum método que redefina os valores para o padrão.

Se o estado "padrão" não exigir recursos, resetpoderá chamar releasepara executar essa parte de suas operações.


6

close()

Ninguém propôs close () ainda. O Java 7 possui um novo recurso "try with resources". Uma classe que é limpa automaticamente precisa implementar java.lang.AutoCloseable que possui um único método close (). shutdown () ou cleanup () também pode ser bom.

Não finalize()

finalize () significa algo específico para o coletor de lixo em Java, e a maneira como funciona é um pouco estranha. Eu ficaria longe de finalize (), a menos que você queira exatamente o que Java faz com finalize ().


2
Você faz uma observação válida sobre finalize () em Java ... mas o OP não indicou em nenhum lugar que eu vi que a pergunta estava lidando especificamente com Java, e nenhuma outra linguagem OO com "nomes de métodos" (por exemplo, C ++).
EliSko 19/10/19

Em C #, Finalizeé usado para destruir instâncias de classes.
Olivier Jacot-Descombes

4

Eu gosto bastante de 'destruir'. Não poderia ser mais claro, a menos que você esteja escrevendo um videogame ou algo assim.


4
Na minha opinião, "destruir" está associado a "criar".
EliSko 19/10/19

4

Eu diria que depende se a ação é opcional ou necessária (sem perda de recursos) e se a linguagem suporta construtores / destruidores. Para casos opcionais, eu uso:

  • Claro
  • restabelecer
  • ocultar (no contexto da interface do usuário)

Em outros casos em que a ação oposta é necessária (em idiomas sem construtores / destruidores, ou quando o destruidor não libera o recurso), eu uso:

  • init - fini
  • inicializar - inicializar
  • criar - destruir

No seu caso, acho que prefiro hide. Ele ainda pode liberar memória / recursos, se quiser - o importante é que é opcional, ou seja, que o destruidor cuidaria disso se você não o fizesse.


3

Meu primeiro pensamento foi derrubar, mas isso é usado em muitas estruturas de teste. Finalizar e descartar têm problemas semelhantes. Redefinir ou limpar as duas opções parecem boas. Reinicializar deixa claro que volta ao estado inicializado, o que seria bom se o estado para o qual você voltar é o estado inicial.

Apenas verifique se o seu termo não está sobrecarregado no seu contexto atual.


Não vejo como isso é um problema em si. Concedido Finalizee Disposeestá fora do código .NET. Fora isso, não vejo problema em reutilizar nomes estabelecidos.
Konrad Rudolph

11
@KonradRudolph Reutilizar um nome estabelecido é bom, SE os conceitos estiverem alinhados muito bem. Nenhum dos termos que listei se alinha muito bem com o que eu entendo que ele esteja descrevendo. Portanto, seria mais confuso, já que você veria o termo pensar, eu sei o que isso faz e estar errado.
Sinal

3

e é usado para redefinir os valores para o padrão e descartar objetos que não serão mais usados.

resetparece um bom termo se você estiver redefinindo o objeto para os padrões. reinitializeTambém pode ser apropriado se o uso desse objeto for semelhante ao que initializefaz. Parece que esse método descartará outros objetos, não aquele que está recebendo a mensagem; nesse caso, qualquer um dos itens acima deve estar bem. Se você está realmente fazendo o oposto inite preparando o receptor para ser destruído, disposeseria uma boa escolha.


1

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

Eu iria finalizar. No entanto, acho que é um pouco dependente do caso de uso exato: por exemplo, se você o usa principalmente para liberar recursos, fechar conexões, arquivos e, em seguida, o lançamento seria mais significativo.

Se você estiver procurando por uma noção para uso geral ou padronizada, eu escolheria algo menos significativo, algo sem significado especial, como liberação ou remoção.

O conceito de init vs (qualquer que seja) é semelhante a (construtor vs destruidor), ou em java finalize.

( Nota : Se a linguagem tem o conceito de construção e destruição de objetos, é pouca ou nenhuma necessidade de usar init ().)


FYI: finalizeestá reservado em Java.
Basil Bourque

0

Se o objeto em que o método está sendo chamado deixar de ser usado, eu usaria apenas o destruidor padrão. Porém, isso não parece o caso, portanto, em vez de ficar genérico demais, um nome melhor provavelmente é algo como hide()se o objeto em si estivesse oculto ou hideUserInterfacePart()se objetos compostos estivessem ocultos.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.