Применяет ли «дело против заявления о Goto» Дейкстра так же, как и в современном вызове именованных инкапсуляций кода, как функции?

StackOverflow https://stackoverflow.com/questions/20353488

Вопрос

Я не знаю, как это сработало в тот день, поэтому я понятия не имею, на что он имел в виду.

Но возьмите JS:

var x = 5;
var foo = function(y) { console.log(2); };
var y = 6;
foo(); // is this not in essence a goto statement?

Если нет, то что отличалось в заявлениях о Goto?

Будет ли Дейкстра выступить против JS на этих основаниях?

Это было полезно?

Решение

В вашем примере вы называете подпрограмму, а не безоговорочно и навсегда переносит поток контроля (что и что в этом goto делает).

Если вы положите код после foo();, этот код будет выполнен после foo() называется.

Другие советы

Нет, это, по сути, заявление «Госуб». Вы читали оригинальную бумагу? Имхо Дейкстра был оскорблен «размазыванием» состояния по всему вашему коду.

Это заявление о прыжке, а не заявление о Goto. Следовательно, он не создает код спагетти.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top