more property discussion...

Steven Schveighoffer schveiguy at yahoo.com
Fri Jan 29 11:56:25 PST 2010


Continuing from another very deep thread...


On Fri, 29 Jan 2010 14:43:12 -0500, Lutger <lutger.blijdestijn at gmail.com>  
wrote:

> On 01/29/2010 07:01 PM, Andrei Alexandrescu wrote:
> ...
>>> How about @property? When you add a @property to a function it can be
>>> called as an assignment. @property does not touch the calling of
>>> no-argument functions.
>>>
>>> Are there any problems with that?
>>
>> Such a "@property is just for the writing" design will leave @property
>> adepts very unhappy, I think. Even I admit that such a rule will be very
>> inconsistent, albeit workable.
>>
>> Andrei
>
>
> It's not inconsistent, at most just a bit confusing on the call site.  
> What @property does is still very clear:
> - same syntax as fields for zero and one parameter functions
> - function call syntax *not* ok
> - mangled differently and recognizable by ide's (think gui programmming  
> and ui design tools) and documentation tools. Probably also for  
> metaprogramming.
>
> Additionally at the call site you can choose to drop parens for zero  
> argument functions, author of those functions has no control over that.  
> This feature is now orthogonal to @property and may or may not end up in  
> style guidelines. It's also one of those things a smart IDE could help  
> you with (did the author really want this to be a property or not?)
>
> I think that solves most of the issues @property was designed for.

This is slightly different than Pelle's idea in that @property applied to  
a no-arg function requires no parentheses.

Hm... what about restricting functions that allow optional parentheses to  
those with no arguments *and* which return void?  That way they are truly  
orthogonal to properties.

I can't say I find the parentheses or lack thereof that distracting or  
ambiguous on such functions.  When a statement is just a symbol without  
any operation on it, and has no return value, it's pretty obvious that you  
intend to call a function.  The only issue is for words that could be  
interpreted as properties given the right context, might they be  
interpreted by a reviewer as a coding error.  I'm willing to live with  
that if it makes others happy.

This allows popFront to omit the parens :)

-Steve



More information about the Digitalmars-d mailing list