<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">IMO, a good setter behaves like it's setting a variable, because this is exactly what the assignment operator suggests. That is:</div><div class=""><div class=""><ul class=""><li class="">you should be able to replace a sequence of writes to a setter by a single write with the last value and still have essentially the same end result;</li><li class="">you should be able to reorder setter operations and still essentially get the same end result.</li></ul><div class="">"Essentially the same end result" means that it's okay if the logging output is different or if you wasted cycles in the process.</div></div></div></div></div></blockquote><div><br class=""></div><div>This.</div><div><br class=""></div><div>On the other hand, we have WatchKit as a counter-example. I'm surprised nobody mentioned it. It's full of setters for properties that match the typical UIKit properties, but cannot be read.</div><div><br class=""></div><div>A.</div><div><br class=""></div><div><br class=""></div></div></body></html>