title: Do you consider multiple initialization steps "poor form"?
body: <p>I'm writing a physics simulation (Ising model) in C++ that operates on square lattices. The heart of my program is my Ising class with a constructor that calls for the row and column dimensions of the lattice. I have two other methods to set other parameters of the system (temperature &amp; initial state) that <strong>must get called before evolving the system!</strong> So, for instance, a sample program might look like this</p>
  
  <pre><code>int main() {
      Ising system(30, 30);
      system.set_state(up);
      system.set_temperature(2);
  
      for(int t = 0; t &lt; 1000; t++) {
          system.step();
      }
  
      return 0;
  }
  </code></pre>
  
  <p>If the system.set_*() methods aren't called prior to system.step(), system.step() throws an exception alerting the user to the problem. I implemented it this way to simplify my constructor; is this bad practice?</p>