Man kann schlechten Code in jeder Sprache schreiben. Nachdem goto
in der Sprache bedeutet nicht , die Sprache schlecht ist.
Betrachten wir die bestehenden Strukturen in verschiedenen Sprachen - Pause , continue
, next
, zuletzt , throw
. Auch switch
dies sind alles Formen eines berechneten Gangs, die von einer Ebene des Bereichs zu derselben oder einer höheren Ebene des Bereichs gehen.
Das Problem mit goto ist, wenn es in eine tiefere Ebene des Bereichs eintritt oder Stapelrahmen überspringt.
Man wird das Beispiel 3 im verknüpften Dokument aus der Frage vermerken:
<?php
goto loop;
for($i=0,$j=50; $i<100; $i++) {
while($j--) {
loop:
}
}
echo "$i = $i";
?>
Dies funktioniert nicht, da goto
versucht wird, in eine tiefere Ebene des Bereichs zu springen.
Es ist nichts Falsches an verschiedenen Formen von eingeschränktem goto, sei es das Schlüsselwort goto oder ein anderer Verzweigungsname. Die Alternativen (hässliche Bedingungen für for-Schleifen) können oft schlechter sein. Wie es ist, vereinfacht die Verwendung von goto das
Persönlich mag ich das Beispiel als Beispiel Nr. 1 nicht
<?php
goto a;
echo 'Foo';
a:
echo 'Bar';
?>
Dies verursacht jedoch keine anderen Probleme mit der Sprache als die Notwendigkeit, dem Entwickler, der absichtlich Code wie diesen schreibt, irgendeine Form von körperlicher Lernerfahrung zuzuweisen.
goto
die Quelle einzulesen oder nicht. Ob sie oft in idiomatischem Code vorkommen oder nicht, ist eine andere Sache. Springen verursacht jedoch keinen Schaden.