Denis Koroskin wrote:
But you are well aware of _other_ cases in which you _have to_ put an
extra pair of parens to access some property method/field thus broking
an encapsulation and preventing the class designer to replace properties
with fields and vice versa at a later stage.
It's simply broken! You say that empty pair of parens is equivalent to
none of them and thus it is allowed to omit them, but it's not true at
all. There are lots of examples where "auto foo = bar();" != "auto foo =
bar;" and "auto foo = obj.bar();" != "auto foo = obj.bar;" (delegates,
class/struct instances with overloaded opCall, etc).
- such a duality is confusing (when may you omit the parens and when you
may not?)
- it makes the language more complex (rules are so complex that hardly
anyone fully understands them)
- it leads to code inconsistency (half of the programmers remove an
"extra" pair of parens and other half preserve them)
- it is a source of many compiler bugs (this and lots of related ones)
- it contributes to user code bugs that are hard to find at times
("oops, I missed a pair of parens. God, I thougth that they were
optional").
IIRC, true property syntax was a #2 wish among the community according
to a recent "Top 5 D problems" poll and now that a Tango/Phobos common
runtime is implemented it becomes #1.
I really wish I could understand Walter arguments against proper
properties in D...
Some good points.
-Joel