Время от времени встречаюсь с задачами, где надо крутить внутри цикла переменную и завершать цикл, когда она достигнет определенного значения. Есть два варианта реализации этого алгоритма:
1. Бесконечный цикл с выходом внутри
do {
int myVar = getVar();
// логика работы с myVar
if (myVar <= 0)
break;
} while (true)
Переменная сидит в своём скоупе, вычисление занимает одну строку, но бесконечный цикл выглядит страшновато, выход из него где-то в середине не очевиден.
2. Цикл с условием:
int myVar = getVar();
while(myVar > 0) {
// логика работы с myVar
myVar = getVar();
}
Цикл не выглядит бесконечным, выход очевиден. Но переменная myVar совершенно не нужно маячит за пределами цикла, строк её вычисления две штуки.
Какой алгоритм вы предпочтете? Почему?