title: Is there any agreement or consent in the order arguments should be passed to a class's constructor?
body: <p>I was wondering if it is a good practice to pass the arguments that are needed for construction of the base class first or last when defining the constructor's signature of a derived class that passes arguments to the constructor of the first class:</p>
  
  <pre><code>public class Base
  {
      private Type1 _t1;
      private Type2 _t2;
  
      Base(Type1 t1, Type2 t2)
      {
          _t1 = t1;
          _t2 = t2;
      }
  }
  </code></pre>
  
  <p>Option 1:</p>
  
  <pre><code>public class Derived : Base
  {
      private Type3 _t3;
      private Type4 _t4;
  
      // Base class arguments first in the signature
      public Derived(Type1 t1, Type2 t2, Type3 t3, Type4 t4) : Base(t1, t2)
      {
          _t3 = t3;
          _t4 = t4;
      }
  }
  </code></pre>
  
  <p>Option 2:</p>
  
  <pre><code>public class Derived : Base
  {
      private Type3 _t3;
      private Type4 _t4;
  
      // Derived class arguments first in the signature
      public Derived(Type3 t3, Type4 t4, Type1 t1, Type2 t2) : Base(t1, t2)
      {
          _t3 = t3;
          _t4 = t4;
      }
  }
  </code></pre>
  
  <p>Though I know it doesn't make any difference to the compiler is there anything said about this in good programming practices? Which approach is preferred, if any?</p>