Я вот люблю плоские условия, а вложенность для редких исключений.
Но что делать, когда логика, вроде бы не позволяет сделать условия плоскими? Когда обязательно нужен else с проверками, а return делать нельзя?
Вот это единственный легитимный момент для использования goto и я не шучу. Но для порядка метка для перехода должна быть одна и только вниз, в конец блока.
Вместо goto, который некоторые не могут использовать по религиозным соображениям, есть while (false) и break.
Ну а в современном C++ подойдет лямбда с вызовом в месте создания, но в нее захватывать по ссылке заебешься.
Ну этм условия ведут к принятию промежуточного решения и они настолько сложносочиненные, что выносить их в отдельную функцию себе дороже. Говнокод это, короче.