Что является противоположностью инициализации (или инициализации)? [закрыто]

94

Термин будет использоваться в качестве имени метода. Этот метод вызывается, когда часть пользовательского интерфейса скрыта (или удалена), и используется для сброса значений по умолчанию и удаления объектов, которые больше не будут использоваться.

Возможные имена: освобождение, удаление, удаление, очистка и т. Д.

Какой из них вы считаете наиболее подходящим?

Габриэль Диаконеску
источник
1
Разрушится? (нужно больше букв)
Дейвин
32
Не вижу, как это не конструктивно, быстрый просмотр ответов ниже показывает, что многие разработчики не совсем понимают антонимы. Имена методов IMO очень важны, и у «initialize» нет четкого антонима, но это общий и полезный термин.
наушник
2
К сожалению, я больше не могу добавить ответ, так как вопрос был закрыт (как сказал earcam: как это не конструктивно?), Поэтому я добавлю свой ответ здесь. Короткая форма, удобная для комментариев: используйте, Initializeтолько если вам не нужен антоним! В случае, если вам нужно выбрать другой глагол (в большинстве случаев есть более описательная альтернатива). Для дальнейшего использования я предоставляю свой список антонимов для программистов на GitHub.
Макс Трукса
3
Я нашел ответы на это очень полезно, когда у меня был точно такой же вопрос. Это не должно было быть закрыто.
Ян Голдби
3
Я согласен ... закрытие этого вопроса не помогает вообще.
harald

Ответы:

80

Я использую :

  • инициализации ()
  • прекратить ()

Я считаю это более подходящим:

  • трудно не увидеть это в коде, потому что это оба длинных слова (я не использую init)
  • это правильный английский (AFAIK)
  • в моей голове прекратить избегать двусмысленности. Он не соответствует началу (соответствует концу), началу (соответствует остановке), созданию (соответствует уничтожению), настройке (соответствует unset), загрузке (соответствует разгрузке) и т. Д.

Некоторые люди могут найти это вопрос вкуса, хотя.

Klaim
источник
6
+1 за terminate(). Я чувствую, что это, как правило, однозначно и, вероятно, разумно применимо во всех случаях использования.
Бен Хокинг
9
Я полностью согласен с «прекратить», все другие предложения для слов с точными, хорошо известными антонимами; уничтожить (создать), tearDown (setUp), закрыть (открыть), выпустить (приобрести) и т. д. Удивительно, сколько разработчиков не видят этого.
наушник
Выбрасывать из окна. Это то, что я делаю с объектами, когда я закончу с ними. (Но Terminate будет моим вторым выбором.)
Nicki
3
@Nicki Выглядит дорого, чтобы заново устанавливать окна при каждом разрушении объекта ...
Klaim
Как указала earcam : это set up(соответствует tear down) нет setup(такого глагола нет в английском языке).
Макс Трукса
25

Обычно я использую Finalize, Destroy или Terminate в зависимости от функции объектов.

В случае, который вы описываете, Finalize - это то, что я хотел бы использовать, основываясь на моей схеме.

Брайан Дишоу
источник
К сожалению, «Finalize» может быть либо синонимом, либо антонимом «Initialize», поэтому я думаю, что это будет плохой выбор в целом. «Разрушить» и «Завершить», однако, являются претендентами. См. Mw.com/dictionary/finalize для определения «положить в окончательную или законченную форму». Я даже видел, как это используется в коде. Т.е. завершение объекта является последним этапом его инициализации. Напротив, класс Object в Java имеет finalize()метод, указывающий, что больше нет ссылок на объект.
Бен Хокинг
@BenHocking Я думаю, что вы принимаете «положить в окончательную или законченную форму» неправильно. Для меня это означает, что вы закончили с объектом, и пришло время очистить / сбросить все свойства. Это то, что ОП говорит, что он хочет сделать. Поэтому я думаю, что это определение доказывает мой случай.
Брайан Дишоу
Кроме того, какие-либо отзывы о том, почему downvote? (Я предполагаю, что это не было @BenHocking, так как он не указал, что был downvoter)
Брайан Дисхау
а) Вы правы, что я не голосовал против. Ваше предложение обоснованно, и я думаю, что это обсуждение полезно. б) Я видел, что finalize () использовался именно в том смысле, который я указал. Например, в классе, вычисляющем триангуляцию Делоне, после добавления всех точек вызывается finalize (), чтобы выполнить некоторые дополнительные вычисления, прежде чем можно будет использовать результаты из него. В этом случае это указывало на то, что объект больше не был открыт для модификации, но он все еще был доступен для использования, то есть для получения результатов триангуляции.
Бен Хокинг
14

Мне нравится releaseметод, который избавляется от объектов и других ресурсов (например, для подготовки к уничтожению). Я бы выбрал resetметод, который сбрасывает значения по умолчанию.

Если состояние «по умолчанию» не требует каких-либо ресурсов, то resetможет быть в состоянии вызвать, releaseчтобы выполнить эту часть своих операций.

comingstorm
источник
6

close()

Никто еще не предложил close (). В Java 7 появилась новая функция «попробуй с ресурсами». Класс, который очищается автоматически, должен реализовывать java.lang.AutoCloseable, который имеет единственный метод close (). shutdown () или cleanup () тоже могут быть хорошими.

Не finalize()

finalize () означает что-то специфическое для сборщика мусора в Java, и способ его работы немного странный. Я бы держался подальше от finalize (), если вы не хотите точно, что Java делает с finalize ().

GlenPeterson
источник
2
Вы делаете правильное замечание о finalize () в Java ... но ОП нигде не указывал, что я видел, что вопрос был конкретно связан с Java, а не с каким-либо другим ОО-языком с "именами методов" (например, C ++).
EliSko
В C # Finalizeиспользуется для уничтожения экземпляров классов.
Оливье Жако-Дескомб
4

Мне очень нравится «уничтожить». Не может быть яснее, если вы не пишете видеоигру или что-то в этом роде.

Элиот Болл
источник
4
На мой взгляд, «уничтожить» в паре с «создать».
EliSko
4

Я бы сказал, что это зависит от того, является ли действие необязательным или обязательным (без утечки ресурсов) и поддерживает ли язык конструкторы / деструкторы. Для дополнительных случаев я использую:

  • Чисто
  • сброс
  • скрыть (в контексте пользовательского интерфейса)

В других случаях, когда требуется противоположное действие (в языках без конструкторов / деструкторов или когда деструктор не освобождает ресурс), я использую:

  • init - fini
  • инициализировать - деинициализировать
  • создать - уничтожить

В твоем случае я бы предпочел hide. Он по-прежнему может освобождать память / ресурсы, если он этого хочет - важно то, что он является необязательным, то есть деструктор позаботится об этом, если вы этого не сделаете.

Оскар Н.
источник
3

Моей первой мыслью было снести, но это используется во многих средах тестирования. Завершение и распоряжение имеют похожие проблемы. Сброс или очистка обоих кажется хорошим выбором. Повторная инициализация дает понять, что он возвращается в инициализированное состояние, что было бы хорошо, если бы состояние, в которое вы возвращаетесь, является начальным состоянием.

Просто убедитесь, что ваш термин не перегружен в текущем контексте.

Подписать
источник
Я не понимаю, как это проблема сама по себе. Конечно, Finalizeи Disposeв коде .NET. Кроме этого, я не вижу проблемы с повторным использованием установленных имен.
Конрад Рудольф
1
@KonradRudolph Повторное использование установленного имени - это хорошо, ЕСЛИ концепции очень хорошо совпадают. Ни один из перечисленных мною терминов не совпадает так хорошо с тем, что я понимаю, что он описывает. Так что это будет более запутанным, так как вы увидите, что термин подумает, я знаю, что это значит, и ошибется.
Знак
3

и он используется для сброса значений по умолчанию и удаления объектов, которые больше не будут использоваться.

resetкажется хорошим термином, если вы сбрасываете объект на значения по умолчанию. reinitializeможет также подойти, если использование этого объекта похоже на то, что initializeделает. Похоже, что этот метод будет располагать другие объекты, а не тот, который получает сообщение, в этом случае любой из вышеперечисленных должно быть хорошо. Если вы действительно делаете обратное initи готовите приемник к уничтожению, disposeбудет хорошим выбором.

Калеб
источник
1

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

Я бы пошел с финализацией. Однако я думаю, что это немного зависит от конкретного варианта использования: например, если вы используете его главным образом для освобождения ресурсов, закрытия соединений, файлов, тогда освобождение будет более значимым.

Если вы ищете понятие для общего использования или стандартизации, я бы выбрал что-то менее значимое, что-то без особого значения, например, выпуск или удаление.

Концепция init vs (что угодно) похожа на (конструктор vs деструктор) или в финализации java.

( Примечание : если язык имеет концепцию конструирования и разрушения объектов, его мало или нет необходимости использовать init ().)

user1063963
источник
К вашему сведению: finalizeзарезервировано в Java.
Василий Бурк
0

Если объект, к которому вызывается метод, перестанет использоваться, я бы просто использовал стандартный деструктор. Это не похоже на случай, поэтому, вместо того, чтобы становиться слишком универсальным, лучшее имя, вероятно, будет чем-то вроде того, hide()если сам объект скрыт или hideUserInterfacePart()если составные объекты скрыты.

Карл Билефельдт
источник