Що протилежне ініціалізації (або init)? [зачинено]


93

Термін буде використовуватися як назва методу. Метод називається, коли частина користувальницького інтерфейсу прихована (або видалена), і він використовується для скидання значень за замовчуванням та розпорядження об'єктами, які більше не використовуються.

Можливі назви: звільнення, вилучення, розпорядження, очищення тощо.

Який ви вважаєте, що є найбільш підходящим?


1
Знищити? (потрібно більше листів)
Дейвін

30
Неможливо зрозуміти, як це не конструктивно, швидке сканування відповідей нижче показує, що багато розробників не отримують антонімів. Назви методів ІМО дуже важливі, і "ініціалізація" не має чіткого антоніму, але це загальний і корисний термін.
вушка

2
На жаль, я не можу більше додати відповіді, оскільки питання було закрито (Як вуха сказала: як це не конструктивно?), Тож я додам свою відповідь тут. Коротка форма, зручна для коментарів, така: використовуйте Initializeлише якщо антонім не потрібен! Якщо вам потрібно вибрати одне інше дієслово (більшість випадків є більш описовою альтернативою). Для подальшої довідки я надаю свій список антонімів для програмістів у GitHub.
Макс Трукса

3
Я знайшов відповіді на це дуже корисним, коли у мене було саме таке питання. Його не слід було закривати.
Ян Голдбі

3
Я згоден ... закриття цього питання зовсім не корисне.
Харальд

Відповіді:


79

Я використовую :

  • ініціалізувати ()
  • припинити ()

Я вважаю це більш підходящим:

  • важко не побачити це в коді, тому що це обидва довгі слова (я не використовую init)
  • це правильна англійська (AFAIK)
  • в моїй голові припинення уникає неоднозначності. Він не збігається починається (які матчі закінчуються), запускається (які матчі припиняються), створюється (які збіги знищуються), налаштовується (які збіги не встановлені), завантажується (які збіги вивантажуються) тощо.

Деякі люди могли знайти питання про смак.


6
+1 для terminate(). Я вважаю, що це, як правило, однозначно і, ймовірно, розумно застосовується у різних випадках використання.
Бен Хокінг

9
Я повністю згоден з "припинити", всі інші пропозиції стосуються слів із точними, добре відомими антонімами; знищити (створити), tearDown (setUp), закрити (відкрити), випустити (придбати) тощо. Дивно, скільки розробників не бачить цього.
вушка

Дефенестрат. Ось що я роблю з предметами, коли закінчую з ними. (Але Терміни - це мій другий вибір.)
Нікі

3
@ Nicki Виглядає дорого, щоб повторно встановити вікна при знищенні кожного об'єкта ...
Клаїм

Як зауважив вуха : Це set up(що відповідає tear down) не setup(в англійській мові такого дієслова немає).
Макс Трукса

25

Зазвичай я переходжу або до завершення, знищення або припинення, залежно від функцій об'єктів.

У випадку, який ви описуєте, Finalize - це те, з чим я б пішов на основі своєї схеми.


На жаль, "Фіналізувати" може бути синонімом або антонімом "Ініціалізувати", тому я думаю, що це був би поганий вибір взагалі. Однак "знищити" та "припинити" є суперниками. Див. Mw.com/dictionary/finalize для визначення, щоб сказати "ввести в остаточну або готову форму". Я навіть бачив, як це використовується в коді. Тобто доопрацювання об'єкта є останнім кроком його ініціалізації. На противагу цьому, клас Object Java має finalize()метод, що вказує більше не посилань на об'єкт.
Бен Хокінг

@BenHocking Я думаю, що ви приймаєте неправильний шлях "ввести в остаточну чи готову форму". Для мене це означає, що ви закінчили з об'єктом і прийшов час очистити / скинути всі властивості. Це те, що ОП говорить, що хоче зробити. Тому я думаю, що це визначення підтверджує мій випадок.
Брайан Дишав

Крім того, будь-які відгуки про те, чому знищення? (Я припускаю, що це не було @BenHocking, оскільки він не вказав, що він був першокласником)
Брайан Дишав

а) Ти маєш рацію, що я не проголосував. Ваша пропозиція розумна, і я вважаю, що це обговорення корисне. б) Я бачив, щоб finalize () використовувався саме в тому сенсі, який я вказав. Наприклад, у класі, що обчислює триангаляризацію Делані, після додавання всіх балів було покликано finalize () зробити додатковий обчислення до того, як результати можуть бути використані з нього. У цьому випадку вказувалося, що об'єкт більше не відкритий для модифікації, але він все ще доступний для використання, тобто для отримання результатів тріангуляризації.
Бен Хокінг

14

Мені подобається releaseметод, який розпоряджається предметами та іншими ресурсами (наприклад, як підготовка до знищення). Я б вибрав resetметод, який скидає значення за замовчуванням.

Якщо стан "за замовчуванням" не потребує жодних ресурсів, resetможливо, ви зможете зателефонувати, releaseщоб виконати ту частину своїх операцій.


6

close()

Ще ніхто не запропонував закрити (). У Java 7 є нова функція "спробувати ресурси". Клас, який автоматично очищається, повинен реалізувати java.lang.AutoCloseable, який має єдиний метод close (). shutdown () або очищення () також може бути хорошим.

Ні finalize()

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


2
Ви маєте вагомий пункт про finalize () на Java ..., але ОП ніде не вказувало, що я бачив, що питання стосується конкретно Java, а не будь-якої іншої мови ОО з "іменами методів" (наприклад, C ++).
EliSko

У C # Finalizeвикористовується для знищення екземплярів класів.
Олів'є Якот-Дескомбс

4

Мені дуже подобається «знищити». Не може бути зрозумілішим, якщо ви не пишете відеоігри чи щось подібне.


4
На мій погляд, "знищити" поєднується з "створити".
EliSko

4

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

  • ясний
  • скинути
  • приховати (у контексті інтерфейсу користувача)

В інших випадках, коли потрібні протилежні дії (мовами без конструкторів / деструкторів або коли деструктор не випускає ресурс), я використовую:

  • init - фіні
  • ініціалізувати - деініціалізувати
  • творити - руйнувати

У вашому випадку я думаю, що я вважаю за краще 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 (що завгодно) схожа на (конструктор проти деструктор), або в java finalize.

( Примітка . Якщо в мові є концепція побудови та знищення об'єктів, її мало або взагалі не потрібно використовувати init ().)


FYI: finalizeзарезервовано у Java.
Василь Бурк

0

Якщо об'єкт, за допомогою якого викликається метод, перестане використовуватись, я б просто застосував стандартний деструктор. Це не схоже на випадок, хоча, замість того, щоб стати занадто загальним, краще ім’я, мабуть, щось на зразок, hide()якщо сам об'єкт ховається або hideUserInterfacePart()якщо складені об'єкти ховаються.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.