Антипаттерн “константа размера массива”

Хочу обратить ваше внимание на антипаттерн, который я часто встречаю в коде студентов на Code Review StackExchange и даже в довольно большом количестве учебных материалов (!) других людей. У них имеется массив, скажем, из 5 элементов; а затем, поскольку магические числа — это плохо, они вводят именованную константу для обозначения количества элементов «5».
void example()
{
constexpr int myArraySize = 5;
int myArray[myArraySize] = {2, 7, 1, 8, 2};
...Но решение это так себе! В приведенном выше коде число пять повторяется: сначала в значении
myArraySize = 5, а затем еще раз, когда вы фактически присваиваете элементы myArray. Приведенный выше код столь же ужасен с точки зрения обслуживания, как:constexpr int messageLength = 45;
const char message[messageLength] =
"Invalid input. Please enter a valid number.\n";— который, конечно, никто из нас никогда не напишет.















