Co sądzicie o goto np. jako zamiennikowi dla niektórych pętli?
Co sądzicie o elastyczności tego rozwiązania?
Chciałbym poznać kilka opinii na ten temat.
Mi osobiście przypadło goto do gustu.
for($i=0,$j=50; $i<100; $i++) { while($j--) { } } end:
for($i=0,$j=50; $i<100; $i++) { while($j--) { if($j==17) { break 2; } } }
do A if (error) goto out_a; do B if (error) goto out_b; do C if (error) goto out_c; goto out; out_c: undo C out_b: undo B: out_a: undo A out: return ret;
do A if (error) { cancel_a(); return ret; } do B if (error) { cancel_b(); cancel_a(); return ret; } do C if (error) { cancel_c(); cancel_b(); cancel_a(); return ret; } return ret;
- mogą łatwo zauważyć, że zastępując die goto da się wyświetlić błąd razem ze stopką
- uzyskujemy zapis wydajny a przede wszystkim czytelny, mamy też switch. By użyć goto trzeba by dodać do każdego warunku goto blad no i pojawia się kolejny problem, bo dochodzi rozmieszczanie etykiet, że już nie wspominając o czytelności czy kontroli nad kodem.
if(!$blad){$wykonaj = 'etap 1';} if(!$blad){$wykonaj = 'etap 1.1';} if(!$blad){$wykonaj = 'etap 1.2.';}