¿El "caso contra la declaración" de Dijkstra se aplica tanto a la llamada moderna de las encapsulaciones nombradas de código como funciones?

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

Pregunta

No sé cómo funcionó en el pasado, así que no tengo idea de a qué se refería.

Pero, tome JS:

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

Si no, ¿qué era diferente de las declaraciones de GOTO?

¿DiJkstra se habría opuesto a JS por estos motivos?

¿Fue útil?

Solución

En su ejemplo, está llamando a una subrutina en lugar de transferir incondicional y permanentemente el flujo de control (que es lo que es lo que goto lo hace).

Si pones código después foo();, ese código se ejecutaría después foo() se llama.

Otros consejos

No, esta es en esencia una declaración de "gosub". ¿Leíste el artículo original? En mi humilde opinión, Dijkstra se ofendió por el estado de "manchar" en todo su código.

Esta es una declaración de salto, no una declaración de GOTO. Por lo tanto, no crea código de espagueti.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top