KDPoid
Full Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Последние пару раз, когда в моей жизни бывало goto... это было как-то так: Код: function Raschet: real; ... begin Result := 0; ... // много букв предварительной подготовки for i1 := b1 to e1 do for i2 := b2 to e2 do ... for i15 := b15 to e15 do begin tmpR := DoIt(i1, i2, ... i15, ...); if tmpR < 0 then // Всё пропало, решение не будет достигнуто, надо прибраться за собой и сваливать. goto ArcticFox; end; ... end; end; ArctixFox:; ... // много букв возвращения всего на исходные места. end; | Когда больше двух вложенных циклов, условие прекращения внутри и нужно выбраться из всех, goto выглядит изящнее, чем if... break, на каждом уровне циклов или оборачивание try-ем и генерация exception внутри. Но потом, я стал пользоваться FixInsight... который нудит про методы больше 70 строк. В результате, не все методы стали меньше этого порога, но goto при этом исчез окончательно Получишь от анализатора тычок: "Ты что, Толстой?", посмотришь ещё раз на код, разобьёшь на три процедуры, и некошерное goto превращается в логичный exit | Всего записей: 404 | Зарегистр. 08-08-2006 | Отправлено: 07:08 09-03-2017 | Исправлено: KDPoid, 07:10 09-03-2017 |
|