Module level variable shadowing
Kapps via Digitalmars-d
digitalmars-d at puremagic.com
Sat Jun 28 23:06:27 PDT 2014
On Saturday, 28 June 2014 at 05:13:16 UTC, H. S. Teoh via
Digitalmars-d wrote:
>
> Actually, this particular use case is very bad. It's just
> inviting
> typos, for example, if you mistyped "int a" as "int s", then
> you get:
>
> struct Foo {
> int a;
> this(int s) {
> this.a = a; // oops, now it means this.a = this.a
> }
> }
>
While I'd much prefer a syntax to handle this automatically, like:
struct Foo {
int a;
this(this.a) { }
}
I prefer having the variable names match what they're assigning
since it makes it clearer. Some other benefits include being able
to get documentation for free. When I was making my own IDE
plugin a year ago, one of the features I liked was that if a
parameter in the constructor had the same name as a
field/property in the class, documentation would be shown for
said field/property as well as for the parameter.
It's just a matter of personal preference. In theory your
compiler should tell you if you're making a useless assignment
like the one in the example.
More information about the Digitalmars-d
mailing list