Я не впервые нахожусь в следующей ситуации:
bool a = some_very_long_computation;
bool b = another_very_long_computation;
while (a && b) {
...
a = some_very_long_computation;
b = another_very_long_computation;
}
Я не хочу вычислять все в состоянии while
, так как вычисления длинные, и я хочу дать им подходящие имена.
Я не хочу создавать вспомогательные функции, потому что в вычислениях используется много локальных переменных, и передача их всех сделает код намного менее читабельным (и это будет some_huge_call).
Неизвестно, будет ли тело цикла выполнено хотя бы один раз.
Что такое хороший паттерн в такой ситуации? В настоящее время я сталкиваюсь с этим в C ++, но я встречал это и на других языках. Я могу решить эту проблему, используя дополнительную переменную isFirstPass
, но она выглядит некрасиво (и, я думаю, вызовет некоторые предупреждения):
bool a, b;
bool isFirstPass = true;
do {
if (!isFirstPass) {
...
} else {
isFirstPass = false;
}
a = some_very_long_computation;
b = another_very_long_computation;
} while (a && b);