Magic numbers

Magic numbers – na początku nauki nie przeszkadzają, w dalszym etapie nauki nadal nie przeszkadzają, ale w pracy już przeszkadzają…
Dobrą praktyką jest zastępowanie w kodzie nic nie mówiących liczb stworzonymi wcześniej #define lub stałymi.
Przykład:
#include <stdio.h>
int main()
{
int port = 18;
printf("Dzialasz na porcie nr: %i", port);
}
taki kod nie jest zbyt piękny i mając kilkanaście czy kilkadziesiąt podobnych zmiennych kod może stać się nieczytelny, poza tym niewiele mówi. Zamiast tego polecam użycie dyrektywy preprocesora #define lub zwykłej stałej.
#include <stdio.h>
#define PORT_GLOWNY 18
#define PORT_DODATKOWY 53
int main()
{
int port = PORT_GLOWNY;
printf("Dzialasz na porcie nr: %i \n", port);
port = PORT_DODATKOWY;
printf("Teraz dzialasz na porcie nr: %i", port);
}
Tak napisany kod jest bardziej zrozumiały dla człowieka. Zamiast #define można użyć const uint8 PORT_GLOWNY = 18; (sprawdzanie typów podczas kompilacji)
W małych domowych projektach może okazać się to zbędne, jednak przy komercyjnych projektach, gdzie cały projekt ma kilkadziesiąt tysięcy linii kodu to jednak pozbywanie się magic numbers z kodu jest wymagane ze względu na jego czytelność oraz statyczną analizę kodu.