Funkcje niezwiązane z członkami, a nie funkcje prywatne

Herb Sutter powiedział, że najbardziej zorientowanym obiektowo sposobem pisania metod w C ++ jest użycie funkcji innych niż funkcje użytkownika. Czy to powinno oznaczać, że powinienem wziąć prywatne metody i przekształcić je w funkcje niezwiązane z członkami niebędącymi członkami? Wszelkie zmienne członkowskie, których te metody mogą potrzebować, mogą być przekazywane jako parametry.

Przykład (wcześniej):

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

Przykład (po):

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

Czy jestem na dobrej drodze? Czy wszystkie prywatne metody powinny zostać przeniesione do funkcji innych niż funkcje niezwiązane z członkami? Jakie powinny być reguły, które mówiłyby inaczej?

questionAnswers(4)

yourAnswerToTheQuestion