Are properties actually all that good?

monarch_dodra monarchdodra at gmail.com
Mon Jul 22 08:39:55 PDT 2013


On Monday, 22 July 2013 at 15:07:29 UTC, Land wrote:
> I was just thinking about properties and to be honest, I don't
> like them all that much. There's no way to tell if it's a
> read-only or write-only property (right?), but getValue and
> setValue are pretty self-explanatory.
>
> Also, someone was angry about .keys making a copy. I agree with
> that person and think that instead of a property, there should 
> be
> a method called copyKeys or getKeysCopy to make it obvious.
>
> Or does anyone have different view on the matter? I'd be happy 
> to
> hear it.

You are opening a big can of worms on this subject. There is a 
500 message debate on this. The basic idea of "properties" is 
(was) that it was supposed to make an abstraction of what is 
actually a data member, or what needs to be calculated (via a 
function).

For example, for a range, you may inquire "empty" or "length", 
without having to worry about things like "was this one 
getLength? or simply length"? Do you *care*? *Should* you care?

So the idea was to make it easier for the end user to not have to 
worry about such implementation details: If it "feels" like a 
member variable, you should be able to *handle* it like a member 
variable.

This was in theory. In practice, the lack of support in the core 
language, or the fact that it was mixed with the notion of 
"optional parens" have corrupted what it was originally designed 
for.

Honestly, I don't even know *what* @property does today, nor what 
it *should* do.

I think the only thing it still does is get the address of the 
returned object when you write "&foo".


More information about the Digitalmars-d-learn mailing list