Număr magic (programare)

Acest termen are și alte semnificații, vezi Semnătura.

Programe de programare greșite

De asemenea, "numerele magice" se numesc practici de programare proaste, când apare o valoare numerică în textul sursă și nu este evident ce înseamnă. De exemplu, un astfel de fragment ar fi prost:







Acum este clar: această linie afișează sprite-ul din centrul ecranului - crucea de vizibilitate. În majoritatea limbajelor de programare, toate valorile utilizate pentru astfel de constante vor fi calculate în etapa de compilare și vor fi înlocuite în locurile în care sunt folosite valorile. Prin urmare, o astfel de modificare a textului sursă nu afectează performanța programului.

În plus, numerele magice reprezintă o sursă potențială de erori în program:

  • Dacă același număr magic este folosit în program mai mult de o dată (sau poate fi folosit), atunci modificarea acestuia va necesita editarea fiecărui eveniment (în loc să se editeze doar valoarea constantei numite). Dacă nu toate intrările sunt corectate, va apărea cel puțin o eroare.
  • Cel puțin într-una din aceste situații, numărul magic poate fi scris inițial cu o eroare și este destul de dificil de detectat.
  • Un număr magic poate depinde de un parametru implicit sau de un alt număr magic. Dacă aceste dependențe care nu sunt marcate în mod explicit nu sunt îndeplinite, va apărea cel puțin o eroare.
  • Dacă modificați apariția unui număr magic, puteți schimba în mod greșit un alt număr magic, independent, dar având aceeași valoare numerică.






Numerele magice și cross-platforma

Uneori, numerele magice dăunează codului cross-platform [1]. Adevărul este că în C în sistemele de operare pe 32 de biți și pe 64 de biți este garantată dimensiunea tipurilor de caractere. scurt și lung. în timp ce dimensiunea este int. mult timp. size_t și ptrdiff_t pot schimba (pentru primele două - în funcție de preferințele dezvoltatorilor de compilatoare, ultimele două - în funcție de dimensiunea bitului sistemului țintă). În codul vechi sau necalificat, pot exista "numere magice", adică dimensiuni de orice tip - atunci când comutați la mașini cu cifre diferite, acestea pot duce la erori subtile.

Numerele care nu sunt magice

Nu toate numerele trebuie transferate în constante. De exemplu, codul de pe Delphi:







Articole similare

Trimiteți-le prietenilor: