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):
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;
};
Przykład (po):
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;
};
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?