Иллюстрированный самоучитель по практике программирования

Загадочные числа

Определяйте числа как константы, а не как макросы.
Программисты, пишущие на С, традиционно использовали для определения загадочных чисел директиву #define. Однако препроцессор С – мощный, но несколько туповатый инструмент, а макросы – вообще довольно опасная вещь, поскольку они изменяют лексическую структуру программы. Пусть лучше язык делает свойственную ему работу. В С и C++ целые (integer) константы можно определять с помощью выражения enurn (которое мы и использовали в предыдущем примере). В C++ любые константы можно определять с помощью ключевого слова const:

const int MAXROW = 24, MAXCOL = 80;

В Java для этого служит слово final:

static final int MAXROW = 24, MAXCOL = 80;

В С также можно определять значения с помощью ключевого слова const, но эти значения нельзя использовать как границы массива, так что зачастую придется прибегать все к тому же enum.

Используйте символьные, а не целые константы.
Для проверки свойств символов должны использоваться функции из <ctype .h> или их эквиваленты. Если проверку организовать так:

? if (с >= 65 && с <= 90)
?….

То ее результат будет всецело зависеть от представления символов на конкретной машине. Лучше использовать:

if (с >= 'А' с <= 'Z')
?…

Но и это может не принести желаемого результата, если буквы в имеющейся кодировке идут не по порядку или если в алфавите есть и другие буквы. Лучшее решение – привлечь на помощь библиотеку в С и C++:

if (isupper(c))

Или в Java:

if (Character .isllpperCase(c))

Сходный вопрос – использование в программе числа 0. Оно используется очень часто и в различных контекстах. Компилятор преобразует это число в соответствующий тип, однако читателю гораздо проще понять роль каждого конкретного 0, если тип этого числа каждый раз обозначен явным образом. Так, например, стоит использовать (void *)0 или NULL для обозначения нулевого указателя в С, а ' \0' вместо просто 0 – для обозначения нулевого байта в конце строки. Другими словами, не пишите:

Иллюстрированный самоучитель по практике программирования › Стиль › Загадочные числа

А пишите:

Иллюстрированный самоучитель по практике программирования › Стиль › Загадочные числа

Мы рекомендуем использовать различные явные константы, оставив 0 для простого целого нуля, – такие константы обозначат цель использования данного значения. Надо отметить, правда, что в C++ для обозначения нулевого указателя принято использовать все же 0, а не NULL. Лучше всего проблема решена в Java – там ключевое слово null определено как ссылка на объект, которая ни к чему не относится.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.