Questo è un argomento un po 'controverso, e immagino ci siano tante opinioni quanti sono i programmatori. Ma per il gusto di farlo, voglio sapere quali sono le pratiche più comuni negli affari (o nei luoghi di lavoro).
Nel mio posto di lavoro abbiamo linee guida rigorose per la codifica. Una sezione di questo è dedicata alle stringhe / numeri magici. Indica (per C #):
Do not use literal values, either numeric or strings, in your code other than to define symbolic constants. Use the following pattern to define constants:
public class Whatever { public static readonly Color PapayaWhip = new Color(0xFFEFD5); public const int MaxNumberOfWheels = 18; }
Ci sono delle eccezioni: i valori 0, 1 e null possono quasi sempre essere usati in modo sicuro. Molto spesso i valori 2 e -1 sono OK pure. Le stringhe destinate alla registrazione o alla traccia sono esenti da questa regola. I letterali sono ammessi quando il loro significato è chiaro dal contesto e non soggetto a cambiamenti futuri.
mean = (a + b) / 2; // okay
WaitMilliseconds(waitTimeInSeconds * 1000); // clear enough
Una situazione ideale sarebbe un documento di ricerca ufficiale che mostra gli effetti sulla leggibilità / manutenibilità del codice quando:
- I numeri / le stringhe magici sono dappertutto
- Le stringhe / numeri magici vengono sostituiti da dichiarazioni costanti ragionevolmente (o in diversi gradi di copertura) - e per favore non gridare con me per usare "ragionevolmente", so che ognuno ha un'idea diversa di ciò che "ragionevolmente" è
- Stringhe / numeri magici sparsi in eccesso e in luoghi in cui non dovrebbero essere (vedi il mio esempio sotto)
Mi piacerebbe farlo per avere degli argomenti basati sulla scientificità quando discuti con uno dei miei colleghi, che sta andando al punto di dichiarare costanti come:
private const char SemiColon = ';';
private const char Space = ' ';
private const int NumberTen = 10;
Un altro esempio potrebbe essere (e questo è in JavaScript):
var someNumericDisplay = new NumericDisplay("#Div_ID_Here");
Tieni DOM ID sopra il tuo file javascript se quell'ID viene usato solo in 1 posto?
Ho letto i seguenti argomenti:
StackExchange
StackOverflow
Comunità IT Byte
Ci sono molti altri articoli, e dopo averli letti emergono alcuni schemi.
Quindi la mia domanda dovrebbe essere usare stringhe e numeri magici nel nostro codice? Sono specificamente alla ricerca di risposte esperte supportate da riferimenti, se possibile.