Yes. Better wording would be no externally visible mutation.<br><br>On Thursday, 28 January 2016, David Waite <<a href="mailto:david@alkaline-solutions.com">david@alkaline-solutions.com</a>> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On Jan 27, 2016, at 1:56 PM, Howard Lovatt <<a href="javascript:;" onclick="_e(event, 'cvml', 'howard.lovatt@gmail.com')">howard.lovatt@gmail.com</a>> wrote:<br>
><br>
> I would say that if it doesn't have arguments and doesn't mutate then it should be a property, since it will read better and is flexible (you can switch between a stored and calculated property without affecting the external interface easily).<br>
<br>
It can mutate as long as the mutation is not externally visible on that interface. An example of this would be if the implementation of Set were internally backed by a Splay Tree, where balancing of the tree happens on every access.<br>
<br>
<a href="https://en.wikipedia.org/wiki/Splay_tree" target="_blank">https://en.wikipedia.org/wiki/Splay_tree</a><br>
<br>
Another example is any computed property ever which output logging.<br>
<br>
-DW<br>
<br>
</blockquote><br><br>-- <br> -- Howard.<br><br>