title: Approach to side-effect-free setters
body: <p>I would like to get your opinion on as how far to go with side-effect-free setters.</p>
  
  <p>Consider the following example:</p>
  
  <pre><code>Activity activity;
  activity.Start    = "2010-01-01";
  activity.Duration = "10 days";   // sets Finish property to "2010-01-10"
  </code></pre>
  
  <p>Note that values for date and duration are shown only for indicative purposes.</p>
  
  <p>So using setter for any of the properties <code>Start</code>, <code>Finish</code> and <code>Duration</code> will consequently change other properties and thus cannot be considered side-effect-free.
  Same applies for instances of the <code>Rectangle</code> class, where setter for <code>X</code> is changing the values of <code>Top</code> and <code>Bottom</code> and so on.</p>
  
  <p>The question is where would you draw a line between using setters, which have side-effects of changing values of logically related properties, and using methods, which couldn't be much more descriptive anyway. For example, defining a method called <code>SetDurationTo(Duration duration)</code> also doesn't reflect that either Start or Finish will be changed.</p>