Naked dot - accessing object fields through unqualified "." [C1]

Marek Kozieł develop4lasu at gmail.com
Tue Mar 31 06:31:13 PDT 2009


2009/3/29 Derek Foster <vapor1 at teleport.com>:
> 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'.
> }
>

You can use:
Eclipse -> Java -> Code Style -> Edit -> Member Access -> Use 'this'
qualifier for field access. (Always)

> 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
>
>
>

Read:
     class Bar {
          public String     name;
          public Bar          right;
     }

     class Root {
          public Bar     right;
          public Bar     left;

          public Root(Bar right, Bar left) {
               this.left = left// left is set here
               .right = right;
          }

     }


Did you noticed missing semicolon?

-- 
Pozdrowionka. / Regards.
Lasu aka Marek Kozieł

http://lasu2string.blogspot.com/



More information about the coin-dev mailing list