L’affaire de Dijkstra contre la déclaration GOTO »s’applique-t-elle autant aux appels modernes des encapulations nommées du code que les fonctions?

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

Question

Je ne sais pas comment cela a fonctionné dans la journée, donc je ne sais pas à quoi il faisait référence.

Mais, prenez JS:

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

Sinon, qu'est-ce qui était différent dans les déclarations GOTO?

Dijkstra serait-il opposé à JS pour ces motifs?

Était-ce utile?

La solution

Dans votre exemple, vous appelez un sous-programme plutôt que de transférer inconditionnellement et définitivement le flux de contrôle (ce qui est ce goto Est-ce que).

Si vous mettez du code après foo();, ce code serait exécuté après foo() est appelé.

Autres conseils

Non, c'est essentiellement une déclaration "gosub". Avez-vous lu le papier original? IMHO Dijkstra a été offensé par l'état de "sating" partout dans votre code.

Ceci est une déclaration de saut, pas une déclaration goto. Par conséquent, il ne crée pas de code spaghetti.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top