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