title: Constructor with too many arguments
body: <p>We have a <code>Transaction</code> class that's very loaded; so loaded that I originally ended up passing almost 20 argument to the <code>ctor</code>. After extracting a few value objects, there are still 12 arguments left, which I still think is too much. </p>
  
  <p>How would I go at avoiding this? I think it's reasonable the arguments are passed to the constructor since they're all required, and I want to make that explicit. I also like how if I add a property, I can add it to the <code>ctor</code> and let my compiler find the places it broke, instead of having to rely on tests for this per se. I don't think object initializers, or builders do the problem any good. It might become more obvious in the next coming days which arguments belong together, and could be composed though.</p>
  
  <pre><code>public class MyEntity() 
  {
      public MyEntity(ValueType prop2, ValueType prop3, ...) 
      {
          Id = Guid.NewGuid();
          Prop2 = prop2;
          Prop3 = prop3;
          ...
      }
  
      public Guid Id { get; private set; }
  
      public ValueType Prop2 { get; private set; }
  
      public ValueType Prop3 { get; private set; }
  
      public ...
  }
  </code></pre>