On 2011-05-10 16:12, Rainer wrote:
Thanks for the explanation.  I'm new to D and I haven't learned the @property 
syntax yet.

The problem is that it took me hours to find this simple bug.  I wouldn't have 
named
the variable and method both isValid myself, but this piece of code is coming 
from Java
where variables and methods can have the same name since method invocations 
always require parentheses.

In C++ this wouldn't compile since all members--be they variables or 
methods--have to be named uniquely.

Here you can't tell from looking at the code what isValid actually refers to.  
It doesn't look like a clean design.
I would never have thought that this method actually calls itself.  How would I 
access the variable isValid here?

Either name it something else or maybe you can use "this".

Debugging doesn't work all that well under Linux which made it even more 
difficult to find the error.
Add to that the fact that the stack probably had been corrupted from the 
recursive method call (stacktrace pointing to
something unrelated) and you're this close to giving up on this language.

I'd rather have the compiler issue an error or warning when you have a variable 
and method with the same name since you
can't access the variable anyway.

If property will be enforced I reckon that plenty of code is going to break.  
IMHO it doesn't look like a feature which is
worth the trouble and confusion it causes.

Cheers,
Rainer

Ruby works the same, but in Ruby all instance variables start with a @ sign.

--
/Jacob Carlborg

Reply via email to