Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erläuterung der Vor- und Nachteile der PHP-Goto-Anweisung

Detaillierte Erläuterung der Vor- und Nachteile der PHP-Goto-Anweisung

May 15, 2018 pm 03:54 PM
goto php 利弊 详解 语句

Sie können auf den ersten Blick erkennen, dass es ein Kind ist, das den Unterschied zwischen Gehe zu und Anruf nicht erkennen kann

Wenn Sie dann in der Gruppe Code eingeben, das Kätzchen benutzte Do...LoopLoop, aber ein Kind in der Gruppe fragte Do... Was ist Loop? -_-|||Als Ergebnis sagte eine Gruppe von Leuten, dass sie selten Do...Loop-Schleifen verwenden und die meisten von ihnen gerne Goto verwenden. Ich habe dieses Problem nicht entdeckt, dass man Goto nicht verwenden kann, sondern dass es so ist Verwenden Sie Goto less! ! !

Genug mit dem Unsinn, kommen wir zur Sache

Erklären Sie zunächst den Unterschied zwischen Goto und Call für Anfänger

Goto wird verwendet, um zum Code zu springen, also wann Der Code wird zu Goto ausgeführt, an die von Rem angegebene Position springen und nach unten ausgeführt . Nach Abschluss der Ausführung wird nicht zur nächsten Zeile der Goto -Anweisung zurückgekehrt.

Call wird auch zum Springen von Codes verwendet, genauer gesagt wird Call zum Aufrufen von Unterprogrammen verwendet! Was ist ein Anruf? Das heißt, wenn der Aufruf ausgeführt wird, wird die angegebene Unterroutine (Sub) in den Code eingefügt. Wenn die Unterroutine ausgeführt wird, kehrt sie zur nächsten Zeile der Call -Anweisung zurück und setzt die Ausführung nach unten fort.

Wenn es schwer zu verstehen ist, verwenden wir zur Erklärung den Code des am Anfang erwähnten Klassenkameraden:

这是Goto语句

这是Call语句

1.      a=15
2.      b=10
3.      if a-b < 15
4.          goto sub1//跳转至Rem sub1处,且不会再跳回来了!!!
5.          if a-b > -15
6.              goto sub2
7.          end if
8.      end if
9.       
10.   Rem sub2
11.   MsgBox "a-b大于-15"
12.    
13.   Rem sub1
14.   MsgBox "a-b小于15"//脚本到底部了,执行结束!!!
Nach dem Login kopieren
1.      a=15
2.      b=10
3.      if a-b < 15
4.          call sub1//调用sub1子程序,当子程序执行结束后,返回到此处,继续向下执行
5.          if a-b > -15
6.              call sub2
7.          end if
8.      end if
9.       
10.   Sub sub2()
11.       MsgBox "a-b大于-15"
12.   End Sub
13.    
14.   Sub sub1()
15.       MsgBox "a-b小于15"
16.   End Sub
Nach dem Login kopieren
Dies ist die Goto-Anweisung<🎜>
<🎜>Dies ist die Call-Anweisung<🎜>
1.      Rem A
2.      If  false
3.          goto   B
4.      End If
5.       
6.      Rem C
7.      if true
8.          goto  A
9.      ElseIf false
10.       goto   B
11.   else   
12.       goto   C
13.   End If
14.    
15.   Rem B
16.   //这样的代码可读吗,你可以划出流程图吗。而且goto完全是可以用其他语句代替的。
Nach dem Login kopieren
Nach dem Login kopieren
1.      Do
2.          Do
3.              Do
4.                  If  true
5.                      Goto 停止//利用goto跳出深层嵌套
6.                  End If
7.              Loop
8.          Loop
9.      Loop
10.    
11.   Rem 停止
Nach dem Login kopieren
Nach dem Login kopieren


OK, die beiden Unterschiede wurden klar erklärt. Lassen Sie uns nun über dieses Thema sprechen, die Vor- und Nachteile von Goto-Anweisungen! ! !

Wie ich oben sagte, befürworte ich, dass Goto weniger verwendet werden sollte und nicht missbraucht werden darf. Einer der Hauptgründe ist, dass die Goto-Anweisung die Programmstruktur zerstört und das Programm weniger lesbar macht , Zwei haben vielleicht keine große Wirkung, aber was ist, wenn Sie mehr als ein Dutzend Gotos verwenden?

Die folgende Passage stammt aus der Baidu-Enzyklopädie (wenn Sie der Meinung sind, dass sie zu viel ist, müssen Sie nur den Abschnitt „Ergebnisse der Goto-Anweisung“ lesen)

Ursprung des Problems:

Seit Mitte der 1960er Jahre hat sich die Computerhardware-Technologie von Tag zu Tag verbessert. Die Speicherkapazität, die Rechengeschwindigkeit und die Zuverlässigkeit der Datenverarbeitung sind erheblich gestiegen, und die Kosten für die Herstellung von Hardware sind weiter gesunken. Der Rückgang der Computerpreise hat hervorragende Voraussetzungen für eine breite Anwendung geschaffen. In dieser Situation ist es dringend erforderlich, dass sich Computersoftware daran anpasst. Daher wurden einige Anforderungen für die Entwicklung großer Softwaresysteme gestellt. Der Fortschritt der Softwaretechnologie konnte den Anforderungen der Entwicklung der Situation jedoch nicht gerecht werden. Im Entwicklungsprozess großer Software sind drei Hauptprobleme aufgetreten: hohe Komplexität, langer Entwicklungszyklus und Schwierigkeiten bei der Gewährleistung der Genauigkeit . Es gibt keine Lösung für die aufgetretenen Probleme, was dazu führt, dass sich die Probleme häufen und eine Situation entstehen, die für die Menschen schwer zu kontrollieren ist. Es entsteht die sogenannte „Softwarekrise“. Um diese Krise zu überwinden, ist es einerseits notwendig, eine Reihe von Forschungen zu Themen wie Programmiermethoden, Programmkorrektheit und Softwarezuverlässigkeit durchzuführen, andererseits ist es auch notwendig, Forschungen zu Softwaremethoden durchzuführen Vorbereitung, Prüfung, Wartung und Verwaltung, wodurch Programmiermethodik entsteht.

 Die Ansicht, dass Goto-Anweisungen schädlich sind:

1968 schlug E.W. Dykstra erstmals das Argument vor, dass „GOTO-Anweisungen schädlich sind“, um die traditionellen Programmiermethoden vor Herausforderungen zu stellen die der Diskussion über Programmiermethoden große Aufmerksamkeit geschenkt haben.

 Kontroverse um die Goto-Anweisung:

In den späten 1960er und frühen 1970er Jahren war die Debatte über die Verwendung der GOTO-Anweisung heftig. Leute, die das Entfernen der GOTO-Anweisung aus höheren Programmiersprachen befürworten, glauben, dass die GOTO-Anweisung eine schädliche Anweisung ist, die den größten Einfluss auf die Programmstruktur hat. Ihr Hauptgrund ist, dass die GOTO-Anweisung das Programm statisch macht 🎜> Struktur und dynamische Struktur Inkonsistenzen erschweren das Verständnis und die Fehlerbehebung des Programms. Nach dem Entfernen der GOTO-Anweisung kann der Programmausführungsprozess direkt aus der Programmstruktur abgeleitet werden. Auf diese Weise wird nicht nur die Programmstruktur klar, leicht verständlich und fehlerüberprüfbar gemacht, sondern auch die Korrektheit des Programms nachgewiesen.

Gegner glauben, dass die GOTO-Anweisung flexibler zu verwenden ist und in einigen Fällen die Effizienz des Programms verbessern kann. Wenn die GOTO-Anweisung vollständig gelöscht wird, führt dies in manchen Fällen dazu, dass das Programm zu komplex wird und unnötige Berechnungen erforderlich werden.

Zur Lösung der Goto-Aussage:

1974 gab D.E. Knuth einen umfassenden und fairen Überblick über die Kontroverse um die GOTO-Aussage:

Die uneingeschränkte Verwendung der GOTO-Anweisung, insbesondere die Verwendung der zurückspringenden GOTO-Anweisung, führt zu einer Änderung der Programmstruktur ist schwer zu verstehen. In diesem Fall sollten Sie versuchen, die Verwendung der GOTO-Anweisung zu vermeiden. In anderen Fällen ist es jedoch erforderlich, einige GOTO-Anweisungen kontrolliert zu verwenden, um die Effizienz des Programms zu verbessern, ohne die gute Struktur des Programms zu zerstören. In seinen Worten: „In einigen Fällen befürworte ich die Streichung der GOTO-Erklärung; in anderen Fällen befürworte ich die Einführung der GOTO-Erklärung.“ Seitdem ist diese 10 Jahre alte Debatte beigelegt.

Später bewiesen G. Gaccopini und C. Boehm theoretisch, dass jedes Programm durch Sequenz-, Verzweigungs- und Wiederholungsstrukturen dargestellt werden kann. Diese Schlussfolgerung zeigt, dass das Entfernen der GOTO-Anweisung aus einer höheren Programmiersprache keinen Einfluss auf die Programmierfähigkeiten der höheren Programmiersprache hat und die Struktur des geschriebenen Programms klarer ist. [/hide]

 

goto

Das Ergebnis der Anweisung:

Die goto-Anweisung bleibt in fortgeschrittenen Programmiersprachen

wie C/C++ erhalten, es wird jedoch empfohlen, sie nicht oder nur sparsam zu verwenden. In einigen

aktualisierten höheren Programmiersprachen wie Java, das keine goto-Anweisungen bereitstellt, wird goto zwar als Schlüsselwort angegeben, seine Verwendung wird jedoch nicht unterstützt, wodurch das Programm prägnant und leicht lesbar wird. Dennoch unterstützt C# später immer noch goto. Bei Anweisungen besteht ein Vorteil der goto-Anweisung darin, dass sie sicherstellen kann, dass das Programm einen eindeutigen Ausgang hat, und eine zu große Verschachtelung vermeiden kann.

如果有仔细看上面这段话的同学,相信能明白goto语句的利与弊了吧?

好吧,还是用代码来解释:

滥用goto语句的例子

合理利用goto语句

1.      Rem A
2.      If  false
3.          goto   B
4.      End If
5.       
6.      Rem C
7.      if true
8.          goto  A
9.      ElseIf false
10.       goto   B
11.   else   
12.       goto   C
13.   End If
14.    
15.   Rem B
16.   //这样的代码可读吗,你可以划出流程图吗。而且goto完全是可以用其他语句代替的。
Nach dem Login kopieren
Nach dem Login kopieren
1.      Do
2.          Do
3.              Do
4.                  If  true
5.                      Goto 停止//利用goto跳出深层嵌套
6.                  End If
7.              Loop
8.          Loop
9.      Loop
10.    
11.   Rem 停止
Nach dem Login kopieren
Nach dem Login kopieren


讲解就到这里了,小猫的想法就是建议大家如果能不用goto就不用goto,尽量多使用Call,如果想跳出循环,每种循环都有对应的跳出语句,如exit do,exit for,exit sub,Exit Function
另外当大家需要用到循环时,建议使用Do...Loop和For...Next两者,而while循环比较绕口,完全可以用do和for代替他

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Vor- und Nachteile der PHP-Goto-Anweisung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

See all articles