@Urukhayy

Если алгоритм зависит от порядка вызова функций в блоке, это не есть хорошо?

Если алгоритм зависит от порядка вызова функций в блоке, это не есть хорошо?
К примеру:
{
    SendABC();
    ShowWindow();
}

и
{
    ShowWindow();
    SendABC();
}

дадут разный конечный результат.
  • Вопрос задан
  • 201 просмотр
Пригласить эксперта
Ответы на вопрос 3
@alexxandr
you'll see in memory only 0xDEADFACE
это довольно логично на самом деле:

Backup()
Remove()

и

Remove()
Backup()

дадут немного разный результат
Ответ написан
@dmitryKovalskiy
программист средней руки
Порядок выполнения операций внутри одной функции в 90% случаев играет роль. Если мы сначала делаем действия, а потом инициализируем значения, то не стоит удивляться ошибкам и постоянно одинаковым результатам. Но есть исключения. 1) Рекомендую свести к предельному минимуму зависимость от порядка выполнения обработчиков событий. Не стоит к одному события делать 2 обработчика, а после молиться что сначала выполнится один, а затем другой. 2) Параллельное исполнение нескольких задач. Опять же - в одном потоке инициализация данных, в другом обработка.. Тот факт что первый поток вы запустили первым не может дать 100% гарантии того, что ко времени запуска второго потока данные будут инициализированы.
Ответ написан
Комментировать
@nirvimel
Это называется Side Effect.
В императивном программировании при работе с mutable структурами/объектами ничто не гарантирует от side effect, то есть порядок вызовов всегда может иметь значение (по крайней мере всегда стоит ожидать этого от чужого кода).
Противоположностью являются "чистые" вычисления, гарантирующие отсутствие side effect. Это достигается:
- в императивном программировании: переходом к использованию только immutable структур/объектов.
- в декларативном программировании: многие языки "чистые" из коробки, это их неотъемлемое свойство.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы