Sziasztok!
Biztos jót tesz egy eddig goto mentes nyelvnek (pontosabban a benne írt programkódok átláthatóságának) a goto?
http://en.wikipedia.org/wiki/Php#PHP_5.3_and_newer
Egykori tanáraim arra oktattak, hogy átláthatatlan programkódhoz vezet a goto, erősen javallt a kerülésük.
A bemutatott példa is gyakorlatilag ennyi lett volna értelmesen:
while (flock($file, LOCK_EX & LOCK_NB)) {
. . sleep(1); // hogy más szálnak is adja oda a procit a lock feloldásának várása közben.
}
Erre most azt látom, hogy a PHP-ba is belerakták a goto lehetőségét.
Bár a PHP-t sokan "tanulónyelv" szintjén kezelik, sok is az ittragadt alapszintű kódgányoló. De akkor is, miért rontják el még jobban a nyelvet?
Vagy csak én látom helytelennek a goto bevezetését?
Netán pont jó lesz ez felvételi tesztnek? Mondván aki a goto-t megtűri a kódban, az kódgányoló és nem programozó.
- 2145 megtekintés
Hozzászólások
A goto az nem minden esetben, feltetlenul rossz. Ld. pl. a Java goto kezeleset.
A PHP standard libraryja, es a nyelvi elemei nagyon nem konzisztensek (ami miatt a PHP programkodot legtobb esetben nehezebb olvasni, mint a "szebb" nyelvekben irtat).
Volt valahol egy topic mostanaban pont arrol, hogy mi a rossz a PHP-ben, keresd meg.
A goto "nem oszt, nem szoroz" mar..
- A hozzászóláshoz be kell jelentkezni
"A goto "nem oszt, nem szoroz" mar.."
+1
- A hozzászóláshoz be kell jelentkezni
+100000
a php-t már nincs hova rontani.
- A hozzászóláshoz be kell jelentkezni
Malbolge, Intercal, Brainfuck, Piet, Whitespace, OISC, URISC, Lolcode, Java2k.. szerinted nem tudnanak beloluk semmit atvenni, ami erdekesebbe tenne a PHP-t? :)
KTHXBYE
--
I hate conspiracy theorists. I'm sure they're all working together somehow to bring down society.
- A hozzászóláshoz be kell jelentkezni
- A hozzászóláshoz be kell jelentkezni
A goto akkor zavaro, ha ide-oda ugralsz vele a kodban.
Sokaig, amig nem volt a nyelvben sem exception, sem goto, hibakezelesnel ilyeneket lathattal:
while(true)
{
//itt valamiket csinalunk, pl. megnyitunk egy file-t
if(hiba)
break;
//valamiket meg csinalunk, pl. olvasunk a file-bolm bezarjuk
break; //kilepunk a "ciklusbol"
}
Ennel szebb lett volna egy if(hiba) goto xy.
Az egymasbaagyazott if()-ek meg a fentinel is rosszabbak olvashatosag szempontjabol.
--
I hate conspiracy theorists. I'm sure they're all working together somehow to bring down society.
- A hozzászóláshoz be kell jelentkezni
jaja, nagyobb if-else dzsungel helyett elegansabb egy returndzsungel
amugy a peldadban a while(true) eleve felesleges, egy valtozoval is lehetne jelezni, hogy a kovetkezo resz teljesuljon-e, pl.
int w=0;
//itt valamiket csinalunk, pl. megnyitunk egy file-t
if(hiba) { w=1; }
if (w==0)
{
//valamiket meg csinalunk, pl. olvasunk a file-bolm bezarjuk
}
vagy meg elegansabb, ha hiba() eleve egy return intes fuggveny, ami hiba eseten 1-et ad:
//itt valamiket csinalunk, pl. megnyitunk egy file-t
if(hiba()<1)
{
//valamiket meg csinalunk, pl. olvasunk a file-bolm bezarjuk
}
- A hozzászóláshoz be kell jelentkezni
Egy rendes programozó, ha nincs goto, akkor implementálja a lehetőségeihez mérten.
int ctr=0;
int i=0;
while(ctr<10000)
{
switch(ctr)
{
case 10: printf("Hello GOTO World!\n"); break;
case 20: i++; break;
case 30: if(i<10) ctr=9; break;
default: break;
}
ctr++;
}
- A hozzászóláshoz be kell jelentkezni
Made my day :)
- A hozzászóláshoz be kell jelentkezni
ROTFL :D
--
I hate conspiracy theorists. I'm sure they're all working together somehow to bring down society.
- A hozzászóláshoz be kell jelentkezni
Donald E. Knuth egy könyvében (Structured Programming with Goto Statements) rávilágított arra, hogy a "goto" utasítás használata veszélyes, és ezért ezt kerülni kell.
Ugyanebben a könyvében azonban egy vicces történetet is közöl:
"1971-ben, az IFIP konferenciáján volt szerencsém összefutni a japán Dr. Eiichi Goto nevű úrral, aki tréfásan panaszkodott, hogy őt mindenki kerülni igyekszik."
--
A főnököm mindig megtartja amit ígér, ha pénzt ígér azt is!
- A hozzászóláshoz be kell jelentkezni