On 16. vel. 2011., at 15:52, David Chisnall wrote:
> 
> Yes, if the dot notation had been properly considered then it would have 
> enforced these additional requirements:
> 
> - Accessor methods supplied for properties must not have side effects
> - Accessor methods supplied for properties must always return the value 
> provided for the last set operation.

That would kill the whole point of having them as methods, don't you think? :)

> - Only methods declared with @property may be called with the dot notation

I think this is enforced on iOS. Not sure, though. From what I caught, that was 
the general intention on Cocoa, but they didn't want to patch every single old 
header and require patching of old libraries.

> 
> If they had made these requirements, then the dot notation would have added 
> something of value to the language.  At present, it is semantically 
> equivalent to a message send and may be used interchangeably with a message 
> send.  Since it is semantically equivalent, it does not provide any more 
> information to the reader or to the compiler, it just does something that 
> looks like a field access (which is one of the fastest operations in C) and 
> actually makes it into a message send or two (which are an order of magnitude 
> slower), making it hard to reason about the behaviour of the code.  

Agreed, they should have provided at least the options to note that you will 
explicitly not customize the method.

>> 
>> I really think that this is a minor issue and that extra brackets in such 
>> short statements do not contribute to readability of code. Most often, one 
>> will not write code that will depend on atomicity of the operation. I don't 
>> write multithreading code because I don't want to worry about atomicity, 
>> locking, race conditions, et cetera.
> 
> Then I hope you never have to write any code that is CPU dependent, since 
> current trends are towards lots of slower cores.

I hope the same; despite being primarily into games, I haven't ran into 
problems where I had to optimize on that level. After all, most complexity is 
in drawing and optimizing drawing, and sadly, OpenGL contexts cannot be 
accessed from different threads on most platforms.

> 
>> But whenever I use dot-syntax, I am very conscious of what I'm doing; I am 
>> conscious that I am making a method call (or two!) and it's not an issue. 
>> And, after all, large majority of my properties are synthesized. What harm 
>> in using that?
> 
> You are thinking about yourself, not about the people reading your code.  
> This is the fastest path to unmaintainable code that I have encountered.  I 
> can point to places in GNUstep and other projects where people have had the 
> same philosophy.  These people have subsequently moved on to other projects, 
> and no one wants to touch the code.  

Good point. I will reconsider my position.

--
Regards,
Ivan Vučica
[email protected] - http://ivan.vucica.net/



Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
Discuss-gnustep mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to