In Java l'unico posto a mia conoscenza in cui la parola chiave final
è richiesta è di rendere una variabile disponibile in modo affidabile per una classe anonima (poiché il compilatore esegue alcuni trucchi sotto le copertine che richiedono che questo il valore non può cambiare).
È - per quanto ne so - un mito che la parola chiave finale consente al compilatore Java di ottimizzare il codice, poiché tutte le ottimizzazioni che importano si verificano nella parte JIT del runtime.
È quindi una questione di gusti. Vi è, tuttavia, un vantaggio molto significativo per l'utilizzo di molte finali, in particolare per rendere il codice più facile per leggere per i futuri manutentori.
Contrassegnare una variabile come final
dice al lettore che questa variabile non cambia mai, mai quando viene assegnata. Questo è molto importante quando si legge il codice come sapete quando è necessario conoscere il valore della variabile che è lo stesso come nell'assegnazione iniziale e non è necessario analizzare mentalmente tutto il codice in mezzo per vedere se la variabile viene assegnata di nuovo con qualcos'altro
Inoltre, se vedi che una variabile è non contrassegnata con final
, sai che sarà ulteriormente modificato ! Questa è un'informazione estremamente importante che può essere trasmessa al lettore semplicemente manchiando di cinque caratteri.
Tutto ciò che può aiutare il maintainer a fare il suo lavoro più velocemente e in modo più affidabile significa che l'applicazione è più economica da mantenere! In altre parole, final
risparmia denaro reale.
Nota: Eclipse ha un'opzione "pulizia del sorgente" che può inserire le finali dove possibile. Ciò potrebbe essere utile sia per scrivere un nuovo codice, sia per mantenere i vecchi (inserire le finali, se alcuni mancano, la variabile viene cambiata dopo l'assegnazione iniziale). Il mio istinto è che questo è ciò che l'autore originale ha scoperto e deciso di usare.
L'argomento è discusso ulteriormente al link