Правила:
1) Если Ваш ответ, примерно: "это просто плохо и неграмотно, и все тут!", то Ваш ответ априори не интересен.
2) Если Ваш ответ, примерно: "это просто неудобно читаемый код и неграмотно, и все тут!", то Ваш ответ априори не интересен.
3) Если Вы можете доказать, что при общении с железом оператор GoTo <== может вызвать реальные сбои, Ваш ответ востребован!
4) Если Вы можете доказать, что при переводе в машинный код оператор GoTo <== может вызвать реальные сбои, Ваш ответ востребован!
5) В общем нужно реальное доказательство, того почему GoTo <= так невзлюбили программисты и почему оно считается плохим тоном?
Пример №1 с Goto
- Код: Выделить всё
labelGoTo1:
а := 'Задаётся заново только для labelGoTo1';
b := 'Задаётся заново только для labelGoTo1';
c := 'Задаётся заново только для labelGoTo1';
d := 'Задаётся заново только для labelGoTo1';
e := 'Задаётся заново только для labelGoTo1';
labelGoTo2:
f := 'Одинаковое для labelGoTo1 и labelGoTo2';
g := 'Одинаковое для labelGoTo1 и labelGoTo2';
k := 'Одинаковое для labelGoTo1 и labelGoTo2';
repeat
...
test := functionTest(a,b,c,d,e,f,g,k);
if buttonExit = true then exit;
ProcessMessages;
until someGlobalBoolean = true;
if test = 1
then GoTo labelGoTo1
else GoTo labelGoTo2;
Теперь пример №2 без GoTo:
- Код: Выделить всё
repeat
if test = 1 then
begin
а := 'Задаётся заново только для labelGoTo1';
b := 'Задаётся заново только для labelGoTo1';
c := 'Задаётся заново только для labelGoTo1';
d := 'Задаётся заново только для labelGoTo1';
e := 'Задаётся заново только для labelGoTo1';
end;
f := 'Одинаковое для labelGoTo1 и labelGoTo2';
g := 'Одинаковое для labelGoTo1 и labelGoTo2';
k := 'Одинаковое для labelGoTo1 и labelGoTo2';
repeat
...
test := functionTest(a,b,c,d,e,f,g,k);
if buttonExit = true then exit;
ProcessMessages;
until someGlobalBoolean = true;
until buttonExit = true;
На мой взгляд разницы нет, разве что в первом варианте Goto, а во втором вложенный цикл (на скорость я это не тестировал).
Вопрос: Использование GoTo действительно очень плохо для программы?
.