Правила программирования на С и С++. Главы 1-6 - Не нужно магических чисел

ОГЛАВЛЕНИЕ

 

68. Не нужно магических чисел.

В основном тексте вашей программы не должно быть чисел в явном виде. Используйте перечислитель или константу для того, чтобы дать числу символическое имя. (Я уже объяснял, почему для этого не очень хорошо применять #define). Тут есть два преимущества:

  • Символическое имя делает величину самодокументируемой, устраняя необходимость в комментарии.
  • Если число используется более чем в одном месте, то менять нужно лишь одно место - определение константы.
Я иногда делаю исключение из этого правила для локальных переменных. Например, в следующем фрагменте используется магическое число (128): f()

{

char buf[128]

...

fgets( buf, sizeof (buf) / sizeof(*buf), stdin );

}

Я использовал sizeof() в вызове fgets(), поэтому изменения размера массива автоматически отражаются в программе. Добавление дополнительного идентификатора для хранения размера добавит излишнюю сложность.