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?