Предположим, что я хочу написать игру (на C), которая спросит пользователя, хочет ли он снова играть после окончания игры.Является ли это приемлемым способом использования goto?
Я вижу два очевидных способа написать это.
Первое:
int main(void)
{
/* variable declarations and initializations */
do { /* optionally multiple games */
/* game code here */
........
/* prompt user wheter he wants to play again */
bool playagain = playagain();
} while(playagain);
.....
}
И второе:
int main(void)
{
/* variable declarations and initializations */
game_start: /* optionally multiple games */
/* game code here */
........
/* prompt user wheter he wants to play again */
bool playagain = playagain();
if (playagain)
goto game_start;
.....
}
Я знаю, что в целом это плохая идея использовать GOTO заявления, но я думаю, что здесь это делает код более понятным и спасает нас от дополнительный уровень отступа.
Так что, мой вопрос в том, является ли этот конкретный пример надлежащим способом использования инструкции goto или я должен его избегать?
Я думаю, что проблема людей с goto не использует 1 goto, это когда она вырастает до 10 или 100. С циклом вы четко видите область действия, с goto это может быть где угодно. – dutt
Это вопрос вкуса. Я не вижу ничего плохого в использовании goto вообще. Почему это было бы плохо? – Art
Плохо, когда вы начнете использовать их много. – LtWorf