Property discussion wrap-up

deadalnix deadalnix at gmail.com
Mon Jan 28 05:45:40 PST 2013


On Monday, 28 January 2013 at 13:41:00 UTC, Dicebot wrote:
> On Monday, 28 January 2013 at 13:37:36 UTC, Andrei Alexandrescu 
> wrote:
>> If we talk about _reasoning_, then properties have already 
>> broken that because a.b may be a function invocation. Probably 
>> it's about something weaker.
>>
>> Andrei
>
> No, it has been stated few times already (actually I have just 
> given answer to the same question to Adam) - properties should 
> be reasoned AS IF they are fields/variables, by design. They 
> are abstraction/encapsulation tools and their implementation 
> details should not matter to the reader. You see property - you 
> assume it is as field, because it looks like one.
>
> That is why having .length of array as a property that 
> reallocates is so horrible.

I do agree, and want to push forward even more with an actual 
example : TLS. TLS is implemented as a function call on some 
systems. However, you manipulate TLS variable as variable in your 
code.

This is the intended abstraction. The fact that a function is 
called is an implementation detail. That is what a property is 
about : providing data with an access pattern different than what 
is wired in the compiler.


More information about the Digitalmars-d mailing list