Comunicazione di intenti
Nel tuo esempio, hai definito una variabile mutabile PI
, che puoi fare riferimento nel tuo programma. Hai creato il codice DRY , che deve essere aggiornato in un unico posto solo se desideri modificarne la definizione. Questo è buono, e funziona per piccoli programmi dove c'è solo uno sviluppatore e non molto codice.
Man mano che la base di codice diventa più grande e man mano che sempre più persone iniziano a lavorare nel codice, diventa molto più importante comunicare l'intenzione .
Sebbene molte persone siano probabilmente consapevoli del fatto che Pi
è una costante matematica e non si aspettano che cambi, lo stesso non è vero per le costanti più . Dichiarando qualcosa come una costante, stai dicendo ad altri sviluppatori (incluso il tuo futuro io) cosa significa quella costante.
Che cosa comunica una costante?
Quando vedi che un valore è dichiarato come costante, il codice è che comunica le seguenti cose a te, come sviluppatore:
- Questo valore mai cambierà durante il runtime del programma.
- Questo valore è probabilmente thread safe (verrà sempre e solo letto, non scritto)
- È probabile che questo valore faccia riferimento in molte aree del codice.
- Il nome del valore probabilmente ti dice qualcosa di importante su ciò che significa.
- Molti di noi sanno che
3.14
è un'approssimazione di Pi
, ma molte costanti non hanno significato senza un nome. if (i > MaxNumberOfUsers)
è molto più significativo di if (i > 10)
.
Quali altri vantaggi possono conferire Constants?
Dichiarare un valore come costante spesso dice anche al compilatore alcune cose (anche se varia a seconda della lingua e del compilatore):
Molti compilatori ottimizzeranno i valori costanti in fase di compilazione e inseriranno i loro risultati direttamente nel codice.
// No calculation will take place at runtime - all of these values
// can be replaced with their calculated results at compile time
const long BytesPerKilobyte = 1024;
const long BytesPerMegabyte = 1024 * BytesPerKilobyte; // Compiles as 1048576
const long BytesPerGigabyte = 1024 * BytesPerMegabyte; // Compiles as 1073741824
// ... elsewhere in the code ...
const long maxFileSize = BytesPerMegabyte * 40;
if (fileSize > maxFileSize) // actually compiles to 'if (fileSize > 41943040) {...}'
{
println("The file is too large to work with");
}
Quindi ...
Quando ho iniziato a imparare a programmare non ho capito il punto delle costanti. Non avevo mai lavorato a un progetto con più di qualche lezione, ed era facile mantenere tutto in ordine.
La maggior parte del codice non è così. La maggior parte del codice esiste in ambienti molto grandi, essendo gestiti da più persone, in momenti diversi. Man mano che i progetti su cui lavori crescono, diventa sempre più importante essere in grado di comunicare agli altri sviluppatori e a te stesso ciò che il tuo codice è destinato a fare.
In questo tipo di ambienti, apprezzerai qualsiasi cosa che porti via parte del carico mentale che ti viene fornito mantenendo tutto nella tua testa.