Un numero è utilizzato solo una volta e direttamente associato a un parametro di funzione un numero magico? [duplicare]

0

Voglio evitare numeri usati direttamente nelle espressioni senza un significato ovvio. Tuttavia, se un numero viene usato una sola volta, come argomento passato in una funzione, e quel numero può essere facilmente cambiato senza interrompere il programma, quel numero è considerato un numero magico?

Ad esempio, ho una funzione double doSimulation(double alpha, double beta, unsigned count) in cui i parametri sono al modello di simulazione. Nel mio codice applicazione, digito double x = doSimulation(0.5, 0.2, 100) come parte della logica dell'applicazione, dove i numeri 0.5, 0.2 e 100 sono inclini a cambiare e non usati altrove, cioè possono essere modificati direttamente per migliorare il modello.

In questo caso, i numeri sono considerati numeri magici? È ridondante dichiarare

const double ALPHA = 0.5;
const double BETA = 0.5;
const unsigned COUNT = 100;

e li usa una sola volta, dato che i numeri sono già nominati mediante il parametro funzione?

    
posta Michael Tsang 02.07.2015 - 09:29
fonte

1 risposta

3

Sì, lo sono ancora. Il punto dietro il concetto di "numero magico" è che non hanno senso da soli. Cosa significa 0.5? Una volta assegnato un nome variabile, hai trasformato quel valore in una cosa con significato. Aiuta anche a modificarli o aggiornarli, se sai che tutti i tuoi numeri magici sono tenuti in un certo posto (ad esempio nella parte superiore della tua classe / header / etc), allora puoi cambiare il valore confidando che sia cambiato nel posto giusto .

Che puoi anche essere sicuro che sia cambiato in modo coerente nel tuo programma se (o quando) viene usato più volte è un bonus.

L'unica volta in cui non si utilizza una variabile per definirli è se il valore non cambia mai, è una costante e non cambierà mai. Non è necessario scrivere 100 come costante quando è usato per calcolare le percentuali.

    
risposta data 02.07.2015 - 09:53
fonte

Leggi altre domande sui tag