Разрушитель или Разрушитель?

В своей повседневной жизни и при чтении книг я видел термин "деструктор" и "деструктор".

Но как правильно назвать этот метод?

7 ответов

Решение

Это деструктор, используемый для очистки вещей, когда объект вот-вот умрет. Вызывается автоматически, если указано, когда объект будет удален / умер.

Больше информации:

http://en.wikipedia.org/wiki/Destructor_%28computer_science%29

Разрушитель, если вы ссылаетесь на ООП. Разрушитель при разговоре о World of Warcraft;-).

Как уже объяснили другие, destructor используется для очистки объекта.

В C# 7 появилась новая функция, которую можно назвать deconstructor:

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public void Deconstruct(out string firstName, out string lastName)
    {
        firstName = FirstName;
        lastName = LastName;
    }
}

var person = new Person { FirstName = "John", LastName = "Smith" };
var (localFirstName, localLastName) = person;

Более распространенные названия для этой функции deconstruct method или просто deconstruction но я нашел по крайней мере один экземпляр в официальном блоге msdn, ссылаясь на него как deconstructor (выделение мое):

Будет обычным делом, чтобы конструкторы и деконструкторы были "симметричными" таким образом.

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

Но эти вещи в некоторой степени зависят от языка, поскольку разные ОО-языки имеют разные модели жизненного цикла экземпляров. Возьмем, например, C#, где вместо деструкторов у вас есть финализаторы, которые имеют слабые гарантии выполнения, дополненные поддерживаемым языком Dispose() шаблон, который обеспечивает определенность.

"Деструктор" - действительно правильный термин. Я видел "деконструктор" в старых книгах, и кажется, что некоторое время велись споры о правильном термине, но деструктор, похоже, победил.

Что касается легкомысленных ответов о том, что вики или WoW говорят о деконструкции: попробуйте поискать "деструктор" в стандартном словаре. По-видимому, это устройство для уничтожения бортовой ракеты или ракеты-носителя.

Destruct = Уничтожить

Deconstruct = разложить (составить в обратном порядке на части)

Поместите -tor, тогда это исполнитель глагола. Так что это зависит от контекста, которого вы пытаетесь достичь.

Я до сих пор помню лекцию, на которой были представлены концепции Haskell, когда я впервые услышал слово «деконструктор». Сначала я был сбит с толку, потому что думал о деструкторах, но, как быстро выяснилось, это разные понятия. В Haskell нет деструкторов, но есть деконструкторы. Они используются для извлечения отдельных полей-членов данных, содержащихся в структурированном значении. В основном это методы доступа к членам, но как функции.

Я действительно задавался вопросом об этом слове, потому что практически никогда не встречал его где-либо еще. Вот нашел ответ:

https://softwareengineering.stackexchange.com/questions/168650/whats-the-proper-term-for-a-function-inverse-to-a-constructor-to-unwrap-a-val

Декомпозитор или деструктурирование может быть хорошим эквивалентным термином, и я действительно часто слышал о «деструктурировании».

Другие вопросы по тегам