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.

Pawel
  • Pawel

Leave a Comment

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *