Su un recente progetto, avevo bisogno di convertire da byte a kilobyte kibibyte . Il codice era abbastanza semplice:
var kBval = byteVal / 1024;
Dopo averlo scritto, ho fatto funzionare il resto della funzione e sono passato.
Ma più tardi, ho iniziato a chiedermi se avevo appena inserito un numero magico nel mio codice. Una parte di me dice che andava bene perché il numero è una costante fissa e dovrebbe essere facilmente compreso. Ma un'altra parte di me pensa che sarebbe stato super chiaro se avvolta in una costante definita come BYTES_PER_KBYTE
.
Quindi i numeri che sono costanti ben note sono davvero così magici o no?
Domande correlate:
Quando un numero è un numero magico? e ogni numero nel codice è considerato un "numero magico"? - sono simili, ma sono domande molto più ampie di quello che sto chiedendo. La mia domanda è focalizzata su numeri costanti ben noti che non sono affrontati in quelle domande.
Eliminare i numeri magici: quando è il momento di dire "No"? è anche correlato, ma si concentra sul refactoring anziché sul fatto che un numero costante sia o meno un numero magico.
1024
, perché altrimenti il tuo team di sviluppo passerà tutto il tempo a discutere se si tratta di "kilobyte" o "kibibytes".
#define
KIBI
1024, MEBI
come 1024 * 1024 ...
ZERO=0, ONE=1, TWO=2
e quando i programmi sono portati in altre lingue (o i programmatori non cambiano comportamento quando cambiano la loro lingua) lo vedrai anche lì e devi pregare che nessuno lo cambi mai in ONE=2
...
FOUR_HUNDRED_FOUR = 404
. Ho lavorato su un altro progetto in cui erano militanti sull'uso di stringhe costanti anziché letterali, quindi avevano dozzine di righe nel codice che sembravano,DATABASE = "database"