Не являющиеся членами не дружественные функции против частных функций

Херб Саттер сказал, что наиболее объектно-ориентированный способ написания методов на C ++ - это использование не связанных с другом функций, не являющихся друзьями. Должно ли это означать, что я должен использовать приватные методы и превращать их в функции, не являющиеся членами-друзьями? Любые переменные-члены, которые могут понадобиться этим методам, могут быть переданы как параметры.

Пример (до):

<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>

Пример (после):

<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>

Я на правильном пути? Должны ли все частные методы быть перемещены в функции, не являющиеся членами-друзьями? Какими должны быть правила, которые бы говорили вам иначе?

Ответы на вопрос(4)

Ваш ответ на вопрос