Expressions and statements
ES.26
Не используйте переменную для двух не связанных между собой целей
Причина
Читаемость и безопасность.
Пример (плохой)
void use()
{
int i;
for (i = 0; i < 20; ++i) { /* ... */ }
for (i = 0; i < 200; ++i) { /* ... */ } // плохо: i переиспользуется
}
Примечание
В целях оптимизации вы можете захотеть переиспользовать буфер в качестве рабочей памяти, но даже в этом случае старайтесь ограничить область видимости переменной как можно больше и будьте осторожны, чтобы не допустить ошибок из-за данных, оставшихся в переиспользованном буфере, — это распространённый источник уязвимостей безопасности.
void write_to_file()
{
std::string buffer; // чтобы избежать перевыделения памяти на каждой итерации цикла
for (auto& o : objects) {
// Первая часть работы.
generate_first_string(buffer, o);
write_to_file(buffer);
// Вторая часть работы.
generate_second_string(buffer, o);
write_to_file(buffer);
// и т.д...
}
}
Контроль
Отмечайте переиспользованные переменные.