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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

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)

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.

7 PHP-Funktionen, die ich leider vorher nicht kannte 7 PHP-Funktionen, die ich leider vorher nicht kannte Nov 13, 2024 am 09:42 AM

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

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

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie analysiert und verarbeitet man HTML/XML in PHP? Wie analysiert und verarbeitet man HTML/XML in PHP? Feb 07, 2025 am 11:57 AM

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge PHP -Programm zum Zählen von Vokalen in einer Zeichenfolge Feb 07, 2025 pm 12:12 PM

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Was sind PHP Magic -Methoden (__construct, __Destruct, __call, __get, __set usw.) und geben Sie Anwendungsfälle an? Apr 03, 2025 am 12:03 AM

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.

See all articles