Для меня то, что ты делаешь, плохо во многих отношениях. Цикл можно заменить, поместив этот код в метод.
Я лично считаю, что если вы должны положить! перед вашими условиями вы ищете не ту вещь. Для удобства чтения сделайте, чтобы ваш логический соответствовал тому, что вы проверяете. Вы действительно проверяете, есть ли ошибка или какое-то плохое состояние, поэтому я бы предпочел:
If (isError)
{
//Do whatever you need to do for the error and
return;
}
над
If (!isGood)
{
//Do something
}
Итак, проверьте, что вы действительно хотите проверить, и сведите к минимуму проверки исключений. Ваша цель должна быть удобочитаемостью, а не хитростью. Подумайте о бедной душе, которая собирается прийти и поддерживать ваш код.
Одной из первых вещей, над которыми я работал 28 лет назад, была программа на Фортране, которая всегда должна была проверять наличие графического устройства. Кто-то принял великое решение вызвать логическое значение для этого LNOGRAF, поэтому, если бы было доступно графическое устройство, это было бы ложным. Я полагаю, что это было установлено из-за ложной эффективности, проверка устройства вернула ноль, если было графическое устройство. Во всем коде все проверки должны были проверить, доступно ли графическое устройство. Это было полно:
If (.NOT. LNOGRAF)
Я не думаю, что был один:
If (LNOGRAF)
в программе. Это использовалось в программном обеспечении планирования миссии для B-52 и крылатых ракет. Это определенно научило меня называть мои переменные для того, что я действительно проверяю.