Интернет магазин китайских планшетных компьютеров



Компьютеры - Магическое число (программирование) - Плохая практика программирования

19 февраля 2011


Оглавление:
1. Магическое число (программирование)
2. Плохая практика программирования



Также «магическими числами» называют плохую практику программирования, когда в исходном тексте встречается числовое значение и неочевидно, что оно означает. Например, такой фрагмент будет плохим:

drawSprite;

Человеку, который не является автором программы, трудно сказать, что такое 53, 320 или 240. Но если этот код переписать, всё становится на свои места.

final int SCR_WIDTH = 640;
final int SCR_HEIGHT = 480;
final int SCR_X_CENTER = SCR_WIDTH/2;
final int SCR_Y_CENTER = SCR_HEIGHT/2;
final int SPRITE_CROSSHAIR = 53;
drawSprite;

Теперь понятно: данная строка выводит в центр экрана спрайт — перекрестие прицела. В большинстве языков программирования все значения, используемые для таких констант, будут вычислены ещё на этапе компиляции и подставлены в места использования значений. Поэтому такое изменение исходного текста не ухудшает быстродействие программы.

Магические числа и кроссплатформенность

Иногда магические числа вредят кроссплатформенности кода. Дело в том, что в Си в 32- и 64-битных ОС гарантируется размер типов char, short и long long, в то время как размер int, long, size_t и ptrdiff_t может меняться. В старом или неквалифицированно написанном коде могут встречаться «магические числа», означающие размер какого-либо типа — при переходе на машины с другой разрядностью они могут привести к трудноуловимым ошибкам.

Например:

size_t a;
memset;                 // неправильно - подразумевается, что size_t равен 4 байтам
memset);    // правильно!

Числа, которые не являются магическими

Не все числа требуется переносить в константы. Например, код на Delphi:

for i:=0 to Count-1 do ...

Смысл чисел 0 и 1 понятен, и дальнейшего объяснения не требуется.

Также можно не делать константами:

  • 0 в качестве false и 1 в качестве true;
  • Основания систем счисления — 10, 60, 1000.


Просмотров: 2537


<<< Магическая кнопка
Синтаксический сахар >>>