[Moscow.pm] Запутался

Ivan Petrov i.petro.77.00 на gmail.com
Вт Окт 2 13:06:02 PDT 2012


>>> Интересно, а чем ему goto не угодили?
>>> и чем они должны быть хуже условных переходов или return?
>> 
>>> Есть ли внятная мотивировка?
>> 
>> вообще 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();
>> }
>> 
>> Если посмотреть скажем в исходники ядра линукс (не перл конечно, но
>> штукенция серьезная), то там таких конструкций чуть поменьше чем в
>> каждом модуле встречается :)



Подробная информация о списке рассылки Moscow-pm