On Sunday, 12 April 2015 at 18:42:01 UTC, Andrei Alexandrescu wrote:
On 4/12/15 10:43 AM, Dicebot wrote:
It is much better in languages that do support dedicated properties because language rules can be used to express the same notion without
resorting to any conventions.

Wouldn't e.g. C# allow arbitrary code in getters and setters? And if so, wouldn't C# code need to resort to conventions to avoid surprising behavior? -- Andrei

This is totally reasonable way to put it but in practice there are enough differences to keep it maintainable. With dedicated getters decision (and reviewer attention) is focused on definition of getter and done there once and for all. Some tough decisions are inevitable but it is at least possible to ensure that all such decisions are deliberate. In D such decision is done at call site which makes it very hard to review as changes are distributed everywhere. Though DScanner can possibly help here and I am really looking forward trying to it in our code control.

That said, I think the main reason why this notion didn't work well for D when @property was introduces is because of extremely vague range semantics. I find it important that you have mentioned exactly `front` and `popFront` as examples for unclear parens placement - problem with those is that there isn't. `front` may or may not be trivial getter depending on (sometimes arbitrary) decision by range implementor, there is no uniformity between those. Which makes impossible to enforce consistent calling style and makes "drop everything" approach much more tempting.

Reply via email to