I think a) that all instance fields that *can* be immutable *should* be immutable (helps a lot in making sure the code is thread-safe) b) that all instance fields that are supposed to be immutable should be declared as final, IMO it makes the code *more* readable
I usually don't declare local variables as final but it would not disturb me at all if someone did. But I didn't contribute any code to Mina code for years, so it's not very relevant what I think ;-) Regards Maarten On Wed, Jan 30, 2013 at 2:08 PM, Emmanuel Lécharny <[email protected]>wrote: > Le 1/30/13 10:29 AM, Steve Ulrich a écrit : > > Hi! > > Sorry, can't resist to respond on this, since i'm paranoid at > programming ;-) > > > >> Emmanuel Lécharny [mailto:[email protected]] wrote > >> > >> there are a lot of methods which have parameters with a 'final' > >> keyword. > >> It's most certaibly a IDE configuration, but it's really annoying. > > It looks ugly, true. But I have seen so many method like: > > > > myMethod (Param parameter) { > > ... > > parameter = new Param(); > > ... > > } > > Yes, me too, and I told the junior to review there code and lecture them > so that they don't do the same mistake again. > > We aren't junior developpers, and I don't want to have to add such > finals all over - even if the IDE does that for me - : t's just a waste > of time, and makes the code ugly, so more painful to read, and I favor > my own comfort over a potential error that never occurs in the code we > write. > > > > IMHO Oracle should make parameter implicit final! > Ys, and many other things that SUN - not Oracle - have missed would be > great to have in Java. But it's not really a problem in this case. > > I don't mark my parameters as final, because it makes the parameter list > hard to read. But I can understand anyone who does so! > Same for me, but I don't understand why people does so. This is a dead > stupid idea pushed by people who aren't confident with the code they > have outsourced somewhere in asia for 5$ an hour... > > > >> Can those who have this configuration set in their IDE change it so > >> that > >> the committed code does not anymore contain the final keyword > >> everywhere ? > >> > >> I personnaly think that the final keyword is useful in two cases : > >> - for static fields, like in private statif final int CONSTANT = xxx > >> - for variable thet are to be accessed by inner classes > > - for (class/object) variables that are not expected to change anymore. > > > > Declaring an AtomicInteger as non-final is a potential threading issue! > Anyone could replace it with a new object, rendering the synchronisation > useless. > > The same is true for concurrent collections, locks, monitors, etc. If > you don't expect (or want) it to change - make it final. > > The use of local variables shouldn't be that complex, that they need a > final statement. > This is a third case, I forgt about it, but this is a perfectly valid one. > > > >> Side note : > >> I know that some may consider that using final for method parameters is > >> a way to protect a stupid coder against a modification of a variable. > >> Yeah, sure... But we are not stupid coders, are we ? > > I'm writing perfect code, but somehow the code changes over time. When > I'm looking into my code a year later, it looks like a drunken monkey hit > on a keyboard ;-) > I'm writing crappy code, and I know that, so I'm extra cautious. But I'm > not relying on stupid rules as a safety belt... > > But this is just me :) > > > -- > Regards, > Cordialement, > Emmanuel Lécharny > www.iktek.com > >
