Не являющиеся членами не дружественные функции против частных функций
Херб Саттер сказал, что наиболее объектно-ориентированный способ написания методов на 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>
Я на правильном пути? Должны ли все частные методы быть перемещены в функции, не являющиеся членами-друзьями? Какими должны быть правила, которые бы говорили вам иначе?