Ограничивайте области видимости переменных
Нет необходимости или удобства создавать переменные в старом стиле Си (ANSI C, он же С89) в начале функции. Создавайте там, где они нужны.
Неправильно:
uint64_t factorial(int n) {
uint64_t result = 0; // Плохо
if (n < 0)
return result;
result = 1;
for (int i = 2; i <= n; ++i)
result *= i;
return result;
}
Правильно:
uint64_t factorial(int n) {
if (n < 0)
return 0;
uint64_t result = 1;
for (int i = 2; i <= n; ++i)
result *= i;
return result;
}
Объявляйте переменные внутри цикла for (для while эта возможность доступна только начиная с С++20) и условного перехода if (С++17). Это позволяет ограничить область действия переменной.
Неправильно:
auto count = values.size();
for (size_t i = 0; i < count; ++i) {
auto state = GetState(i);
if (state == -1)
break;
// ...
}
Правильно: