+1 to removing *final* on local variables. However, regarding Ryan's example, and even if it adds some "noise" to the source code, I'm in favour of keeping the *final* keyword on local variables whenever the developer wants to explicitly show the intent of making that the variable effectively constant. Cheers.
On Fri, Jun 14, 2019 at 12:15 AM Ryan McMahon <rmcma...@pivotal.io> wrote: > I agree with this sentiment, and have generally only been using final on > class fields and method parameters where I want to guarantee immutability > as of late. However, I was at one time adding final to local variables, > and I know that I have checked in code with final locals. Should we > actively be removing finals when we see it on locals? > > One case where I still have been using final for locals is when the > variable is effectively constant and I want to show that intent. For > instance: > final String resourceId = > "someStaticResourceIdThatReallyShouldntBeReassignedEver"; > > Is this a valid use case or should we view this as unnecessary verbosity as > well? > > Thanks, > Ryan > > > > On Thu, Jun 13, 2019 at 1:31 PM Kirk Lund <kl...@apache.org> wrote: > > > According to Effective Java 3rd Edition, all local variables are > implicitly > > made final by the JVM (and thus receiving the same JVM optimizations as a > > final variable) without requiring use of the keyword as long as you only > > set the value once. So this becomes an unnecessary use of the keyword > > final which > > really just adds noise to the code (one more word on many lines) much > like > > unnecessary uses of this. on references to class fields. The only context > > where it's still valuable to use final is on class fields and constants > > where it provides concurrency guarantees. > > > > It may be useful to temporarily mark a local variable as final while > > performing a refactoring. See Martin Fowler's book for various > refactorings > > in which he does this. > > > > There really is no value in retaining the keyword on a local variable any > > longer, so I think we should avoid using it in the same way we avoid > > unnecessary uses of this. on references to class fields. It's all just > more > > noise in the code. > > > -- Juan José Ramos Cassella Senior Technical Support Engineer Email: jra...@pivotal.io Office#: +353 21 4238611 Mobile#: +353 87 2074066 After Hours Contact#: +1 877 477 2269 Office Hours: Mon - Thu 08:30 - 17:00 GMT. Fri 08:30 - 16:00 GMT How to upload artifacts: https://support.pivotal.io/hc/en-us/articles/204369073 How to escalate a ticket: https://support.pivotal.io/hc/en-us/articles/203809556 [image: support] <https://support.pivotal.io/> [image: twitter] <https://twitter.com/pivotal> [image: linkedin] <https://www.linkedin.com/company/3048967> [image: facebook] <https://www.facebook.com/pivotalsoftware> [image: google plus] <https://plus.google.com/+Pivotal> [image: youtube] <https://www.youtube.com/playlist?list=PLAdzTan_eSPScpj2J50ErtzR9ANSzv3kl>