Ivan Petrov <[email protected]> писал(а) в своём письме Tue, 02 Oct 2012 23:06:02 +0300:

Интересно, а чем ему goto не угодили?
и чем они должны быть хуже условных переходов или return?

Есть ли внятная мотивировка?

вообще goto очень удобен в случаях когда идет последовательная
инициализация (выделение) ресурсов и в случае если надо сделать откат:

А что значит удобно?

то что все другие варианты более громоздки и менее читабельны

Спасибо.
Лично у меня нет аллергии на goto,
единственный недостаток --- надо придумывать метки :)

sub init() {
   unless (do_something1) { goto rollback_something1 }
   unless (do_something2) { goto rollback_something2 }
   unless (do_something3) { goto rollback_something3 }
   unless (do_something4) { goto rollback_something4 }
   return;

   rollback_something4:
       rollback_something4();
   rollback_something3:
       rollback_something3();
   rollback_something2:
       rollback_something2();
   rollback_something1:
       rollback_something1();
}

Если посмотреть скажем в исходники ядра линукс (не перл конечно, но
штукенция серьезная), то там таких конструкций чуть поменьше чем в
каждом модуле встречается :)



--
ANG
--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить