Voting and discussion are closed for now. I'll count up the votes and post
a summary soon.

-Kirk

On Thu, Apr 22, 2021 at 7:54 AM Bruce Schuchardt <bru...@vmware.com> wrote:

> Kirk speaks my mind.  -1 on this requirement
>
> On 4/21/21, 11:29 AM, "Kirk Lund" <kl...@apache.org> wrote:
>
>     -1 as I've already explained in my DISCUSS thread for this topic, I
> don't
>     think final gives sufficient benefit for local variables or method
>     parameters because it only prevents reassigning object pointers and
>     primitive values.
>
>     I favor individuals making a personal decision on whether or not they
> want
>     to use 'final' in this way without requiring others to do the same
> (and NOT
>     requiring this use of 'final' in PR reviews, although "suggesting" is
> ok).
>
>     Note that JDK and all other libraries I looked through do not use
> final in
>     this way.
>
>     *I'm willing to change my vote to -0 if*:
>
>        1. we qualify the requirement to only apply to method and
> constructor
>        parameters (not local vars)
>        2. we find a way to introduce automation for enforcement (such as
> we do
>        with RAT for license headers)
>
>     *I'm willing to change my vote to +1 if *we decide to require 'final'
>     parameters (and even local vars) as part of a bigger shift towards
>     improving code quality by embracing Clean Code (ala Bob Martin):
>
>        1. we commit to developing a robust and thorough coding standard
> that
>        includes requiring true unit tests and passing in dependencies via
> class
>        constructors or methods
>        2. we revisit our DOD and enforce it in PR reviews
>
>     I recommend that contributors use IntelliJ inspections (or comparable
>     guideline for anyone who doesn't want to use IntelliJ) that will
> assist us
>     in avoiding and fixing long methods when writing new methods and when
>     editing/refactoring existing methods (see below)
>     Method metrics (see IntelliJ > Preferences > Editor > Inspections):
>
>        - Method with too many parameters
>        - Overly complex method
>        - Overly long method
>        - Overly nested method
>
>     The inspections can be customized for Geode as long as the values
> aren't
>     increased to the point of it being useless. For example, we would have
> to
>     agree as a community what the "maximum number of parameters" is for the
>     "Method with too many parameters" inspection.
>
>     We could even export an inspections profile to be stored in the Geode
> repo
>     and used by contributors.
>
>     -Kirk
>
>     On Wed, Apr 14, 2021 at 12:55 PM Kirk Lund <kl...@apache.org> wrote:
>
>     > Our coding standard and our Design Decisions does NOT require using
> final
>     > on parameters and local variables.
>     >
>     > Please do NOT request that I add or keep final on parameters or local
>     > variables unless the community votes and decides that every
> parameter and
>     > local variable should require the final keyword. I coded this way in
> the
>     > past and I found that it resulted in noisy code with no benefit. We
> can
>     > argue about using this keyword all you want but the fact is I'm
> against it,
>     > and I will not embrace it unless this community decides that we need
> to use
>     > it.
>     >
>     > Using final on instance or class fields does have a concurrency
> benefit
>     > and I support that only.
>     >
>     > If you want to add final to every single parameter and local var in
> the
>     > Geode codebase, then now is your chance to vote on it. Please vote.
>     >
>     > Thanks,
>     > Kirk
>     >
>     >
>
>

Reply via email to