There's also the ability to override the setter method, to do a bit of pre-processing for example stripping unwanted spaces out of strings or whatever.  Always using the setter method to change the value (outside of the setter method itself of course) means that when the variable is altered it is always altered according to the same rules.<br>
<br><div class="gmail_quote">On 21 September 2011 11:48, Graham Ashton <span dir="ltr"><<a href="mailto:graham@effectif.com">graham@effectif.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div class="im">On 21 Sep 2011, at 11:31, Tom Stuart wrote:<br>
<br>
> I like this because a) it encapsulates access to that piece of state, in case I want to provide a default or otherwise wrap reads/writes to the instance variable, and b) instance variables are ugly innit.<br>
><br>
> But if you like reading/writing instance variables in your methods, perhaps for Nebulous Performance Reasons, that's fine too.<br>
<br>
</div>Nice summary.<br>
<br>
I've benefitted enough times (normally when refactoring classes) over the years from calling the accessor methods to feel that it's well worth it.<br>
<br>
Once you've defined the accessor, consistency and predictability is also a good reason to use it.<br>
<br>
In Python once you've defined the setter, it automatically gets called on assignment. In other words, the syntax for calling the setter is identical to the syntax to setting the instance variable. This has always struck me as a brilliant piece of design. What's nice about that is you don't have some code calling the accessor, some code updating the instance variable directly, simply because people have different styles, preferences or expectations.<br>

<br>
In Ruby I stick to the convention instead.<br>
<div><div></div><div class="h5">_______________________________________________<br>
Chat mailing list<br>
<a href="mailto:Chat@lists.lrug.org">Chat@lists.lrug.org</a><br>
<a href="http://lists.lrug.org/listinfo.cgi/chat-lrug.org" target="_blank">http://lists.lrug.org/listinfo.cgi/chat-lrug.org</a><br>
</div></div></blockquote></div><br>