On Sunday, 20 October 2013 at 01:15:12 UTC, Jonathan M Davis
wrote:
On Saturday, October 19, 2013 18:50:16 Chris wrote:
A warning would be enough. The thing is I didn't want to give
it
the same name. It was meant to be the class variable but the
auto
was a leftover from a test. A warning would have been nice, à
la
"do you really want this?". I would have seen it immediately.
Warnings are pretty much always a bad idea IMHO. If you're
being a responsible
programmer, you fix all warnings, so they're ultimately not
really any different
from an error except that you can leave them alone temporarily
while
developing. It's far better to make something an error not have
the compiler
complain about it at all. lint-like tools can do additional
analysis based on
additional stuff that a programmer decides they want to look
for in their code,
but the compiler shouldn't be pointing out stuff that "might"
be wrong, because
you'll have to "fix" it whether it's wrong or not just to get
the compiler to
shut up about it.
And Walter agrees with me on this. Pretty much the only reason
that warnings
even exist in dmd is because he got pestered into adding them,
and even then,
we don't have very many. Most of them end up being warnings
about stuff that
will become errors later (rather than just making them an error
immediately
and break code).
- Jonathan M Davis
I can see your point. However, in this case a warning would
really make sense, in my opinion, because it is potentially
harmful and very likely not what the programmer intended, except
in a case like
this (string a) {
this.a = a;
}
which could be ignored by the compiler. Usually same-name
variables are only used in the constructor. Using them in other
places in the class is not recommendable, and I don't mind useful
warnings like "Listen, there is a variable shadowing the class
variable, do you really really want this?" To spam the command
line with compiler warnings is not very helpful, I agree, but is
it a good solution to categorically rule out warnings?