Expressions and statements
ES.45
Избегайте «магических констант»; используйте символические константы
Причина
Безымянные константы, встроенные в выражения, легко упустить из виду и зачастую трудно понять:
Пример
for (int m = 1; m <= 12; ++m) // не делайте так: магическая константа 12
cout << month[m] << '\n';
Нет, не все знают, что в году 12 месяцев, пронумерованных от 1 до 12. Лучше:
// месяцы индексируются от 1 до 12
constexpr int first_month = 1;
constexpr int last_month = 12;
for (int m = first_month; m <= last_month; ++m) // лучше
cout << month[m] << '\n';
Ещё лучше — не раскрывать константы:
for (auto m : month)
cout << m << '\n';
Контроль
Отмечайте литералы в коде. Пропускайте 0, 1, nullptr, \n, "" и другие из положительного списка.