title: Non-member non-friend functions vs private functions
body: <p>Herb Sutter has said that the most object oriented way to write methods in C++ is using non-member non-friend functions. Should that mean that I should take private methods and turn them into non-member non-friend functions? Any member variables that these methods may need can be passed in as parameters.</p>
  
  <p>Example (before):</p>
  
  <pre><code>class Number {
   public:
    Number( int nNumber ) : m_nNumber( nNumber ) {}
    int CalculateDifference( int nNumber ) { return minus( nNumber ); }
   private:
    int minus( int nNumber ) { return m_nNumber - nNumber; }
    int m_nNumber;
  };
  </code></pre>
  
  <p>Example (after):</p>
  
  <pre><code>int minus( int nLhsNumber, int nRhsNumber ) { return nLhsNumber - nRhsNumber; }
  class Number {
   public:
    Number( int nNumber ) : m_nNumber( nNumber ) {}
    int CalculateDifference( int nNumber ) { return minus( m_nNumber, nNumber ); }
   private:
    int m_nNumber;
  };
  </code></pre>
  
  <p>Am I on the right track? Should all private methods be moved to non-member non-friend functions? What should be rules that would tell you otherwise?</p>