What do you eran from that? Sparing "value" as a reusable identifier?

Not using a magic identifier, which makes the code clearer.

You define a getter at the top of the class, then finding a setter three screens lower and you finnaly learn that the property is not that "read-only"?

Nothing is stopping you from keeping the getter and setter together. It also seems to me that this is something people would usually do, as you usually write one of those right before you write the other, and later inserting some other definition between them just feels wrong. How many times have you encountered this problem?

I think the first step into better property definition/implementation/comprehension would be exactly that: to force the code of the getter and the code of the setter to stick together.

Yes, exactly at the user of a property I was thinking. That user is also a programmer, but he does not do the implementation of the property, just using it.

The confusion does not lie with that user, but it was sparked when the implementation decision was made, in the very heads of those who started implementing properties as just-another-function.

This confusion propagates from the implementors to the user, as the (usage) syntax issues are issues for the user.

It also does not help that, for the time being, the users of properties are also the implementors of properties. There is not much objectivity in this case.

So you are assuming that having a special syntax for defining properties has some psychological effect on programmers that results in proper usage of properties, and that the lack of such syntax in D is the main reason for improper property usage.

I disagree. I think that the main reason @property is currently overused in D is that people were under the impression that paren-less calls will only be supported for @property functions in the future. So if people wanted some of their functions to be callable without parens (and some people do want that), they actually had an incentive to make them @property, even if they weren't logically properties.

Reply via email to