PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 5.0.0 PHP Release führt zu Spaghetticode



dlite
02.06.2009, 11:08
PHP 5.0 bringt die allseits bekannte Funktion "goto", welche schon bei C++ und visual basic verwendet wird mit.

Findet ihr den Spaghetti-Code, à la goto sinnvoll oder eher kompletter quatsch?

v0id
02.06.2009, 11:15
Kann praktisch sein, wenn man zum Beispiel ne allgemeine Fehlermeldung hat, die öfters verwendet wird. Dann kann man schnell hinjumpen, andererseits kann man das auch mit Funktionen alles machen, also nicht unbedingt ne Verbesserung, eher ein nettes Gimmick, was vermutlich einfach zu implementieren war.

Im Endeffekt kann ja immernoch jeder selber entscheiden ob ers braucht und benutzt oder nicht...

PoLe
02.06.2009, 11:17
wie v0id meinte ... mit funktionen gehts halt auch ... aber ich denk jetzt wirds interessant für batchscripter xD

-=Player=-
02.06.2009, 11:29
ich bin voll und ganz der meinung meiner vorposter, aber da es kein verschlechterung ist, sondern nur ein zusatz, ist es mir eigentlich egal :)

wacked
02.06.2009, 11:49
if $_GET['a']=="abc"{
for $i=0;$i<100;$i++{
if NOW()=="16.00"
echo "16 UHR";
else if (NOW()+27!=0 THEN
for $j=0;$j<$i;Sj++{
k=$j+$i;
for $l=500;$l>$j;$k--{
echo "lol";
}
if $k=27&$j=324&$i!=3454 THEN
goto ende;
}
...
:ende
für sowas isses praktisch

dlite
02.06.2009, 14:59
nur dass du dann wohl zu 100% nen fehler ausgegeben kriegst weil man aus ner schleife nicht einfach so mit goto herausspringen kann. das geht nur mit break

VeN0m
02.06.2009, 15:04
Sinnvoll, da es, wie Player schon sagte nur ein Zusatz und keine Norm ist.

Um aus einer Schleife rauszukommen gibt es dennoch nettere Wege :>.
Die Schleifenbedingung ungültig machen, false wiedergeben, per exit aussteigen...

Ich denke jedoch dennoch nicht, dass ich sowas nutzen werde. Ich finde stur nacheinander arbeitende Scripte besser, als welche, die einfach Code überspringen können.

Sirect
02.06.2009, 15:20
visual basic verwendet wird

Keiner würde das in VB benutzen.
Ist völlig veraltet und führt zu komischen Ergebnissen.

-=Player=-
02.06.2009, 16:51
hab ich aber in vb auch des öffteren gesehen ... leider

Cheese
02.06.2009, 18:05
immer rein mit den funktionen, keine ist gezwungen es zu verwenden.

und für kleine miniscripts kann man es ja mal nehmen :>

kInGoFcHaOs
02.06.2009, 18:40
Sirect (http://free-hack.com/member.php?u=44710)
ich habs schon in vb genutzt...^^

naja mir ist es egal ich werde goto nicht nutzen ^^

TamCore
02.06.2009, 19:13
Ich werds bestimmt in den ein oder anderen PHP Bot von mir einbauen. Hab nen goto schon öfters gebraucht^^

mo0wm
02.06.2009, 19:16
Kann mir mal jemand bitte ein Beispiel zeigen, wo ein goto sinnvoll wäre?
Ich habe das irgendwie noch nie gebraucht und mir erscheint das auch irgendwo sinnlos, da Schleifen mehr Sicherheit und Übersichtlichkeit bieten.

cTPu1bjo
02.06.2009, 19:20
Goto's sind krebserregend.

$_staX
02.06.2009, 19:22
Ich werde es nicht verwenden und finds auch ein bisschen sinnlos, dass man das jetzt einführt...

Bozok
02.06.2009, 20:00
Warum soll man es nicht benutzen wenn man es geboten bekommt. Ich benutze zwar goto sehr selten aber manchmal ist es in VB nötig um Errors handlen zu können...

dlite
03.06.2009, 16:02
gotos kann man sehr leicht durch schleifen ersetzen, also bringen die kaum was. Info lehrer hat mich neulich angemeckert weil ich der einfachkeitshalber goto verwendet hatte in vb xD

Jura
03.06.2009, 21:25
in vb isses ganz praktisch für Errorhandling...

man muss es halt sinnvoll einsetzen




Private Function Ficken() As Boolean
Dim i As Long
Dim X As Variant

On Error GoTo ErrorMark

X = "Hallo Welt"
i = X ' fehler...
Ficken = True ' ihr werdet wohl nie Ficken^^

GoTo Leave: 'oder Exit Funciton/Sub
ErrorMark:
MsgBox Err.Description & vbNewLine & Err.Number 'o.Ä
Debug.Assert False ' man kann auch Strg+Pause klicken wärend man in der Ide die msgbox angezeigt bekommt, dann einmal F8 und dann springt man zu Resume..
Resume ' nur benutzen um die fehler auszubessern, man spring an die stelle wo der fehler auftritt, wenn man das programm so weitergibt und ein fehler auftaucht gibts ne 100%ige CPU auslastung... da es eine endlos schleife ist...
Leave:
' Man kann hier halt noch iwas machen, egal ob nen fehler aufgetaucht ist oder nicht, man springt hier immer rein..
End Function

2called-chaos
11.06.2009, 18:43
PHP 5.0 bringt die allseits bekannte Funktion "goto"
Ab PHP Version 5.3 (!!!)


nur dass du dann wohl zu 100% nen fehler ausgegeben kriegst weil man aus ner schleife nicht einfach so mit goto herausspringen kann. das geht nur mit break

Man darf nicht IN schleifen springen, heraus schon...


Naja es macht es nich unübersichtlicher als Funktionen (diese muss man ja genauso suchen wie goto's)...
Find ich persönlich nicht schlimm sofern man sie vernünftig einsetzt, eben nicht wie in Basic, und die PHP Dev's haben sich da auch viele Gedanken drüber gemacht (Irgendwo das Protokoll gelesen wo die sich getroffen haben)



Mfg

Chaos

Qgel
14.06.2009, 21:30
Ich weiß gar nicht warum goto's so oft als die Ausgeburt des Bösen empfunden werden. Liegt wahrscheinlich zum Teil an so verkorksten Spezifikationen wie in pascal (wo goto's tatsächlich schrecklich sind). Aber heutzutage macht es in keinem Modernen Compliler von der Performance gesehen einen unterschied ob man nun ein goto oder ein if benutzt. Und wenn man durch das goto eine bessere lesbarkeit erreicht dann ist das meiner meinung nach durchaus gerechtferigt.

Ob das ganze jetzt viel performance in PHP-scripten ausmacht, die ja nicht kompiliert werden, kann ich nicht sagen. Aber ich nehme an das dass bei einer vernünfigen Implementation kein Problem darstellen sollte.

//edit: besser hätte ich es nicht sagen können: http://netevil.org/blog/2004/jul/goto-isnt-evil