Naked dot - accessing object fields through unqualified "." [C1]
Derek Foster
vapor1 at teleport.com
Sat Mar 28 19:42:05 PDT 2009
The major problem I have with this proposal is that it does not address the point of why I use a prefix on field names. As such, I would still continue to use a prefix even if this proposal were implemented.
In short, I use a prefix to avoid typographical mistakes, like this one:
void setFoo(Thing foob) { // Typo!
this.foo = foo;
}
This will compile, and no warnings are produced, but it ends up assigning foo to itself, which is not what was intended.
Your proposal has exactly the same problem:
void setFoo(Thing foob) { // Typo!
.foo = foo;
}
It therefore does not substitute for a field prefix, which WILL fix the problem:
void setFoo(Thing foob) { // Typo!
_foo = foo; // ERROR! Undefined variable 'foo'.
}
So unless you had some way to make use of the dot prefix mandatory and the only legal way to access fields (which I would like, but which would be an extremely backwards-incompatible change that will never happen in Java), I don't see that adding an optional dot prefix helps the situation except to reduce typing in constructor and setter methods slightly.
(Note: I would love a "self-assignment is forbidden" change to Java. If I have time after my other proposals, I might write one up. (Anyone else want to volunteer? This one is easy!) I might be willing to forego prefixes and use the "this.foo = foo" approach, or even the ".foo = foo" approach, if I was sure it wouldn't cause me to fall into the self-assignment trap.)
Derek
More information about the coin-dev
mailing list