Funciones no-no-miembros no-miembros vs funciones privadas
Herb Sutter ha dicho que la forma más orientada a objetos de escribir métodos en C ++ es usar funciones que no sean miembros que no sean amigos. ¿Debería eso significar que debo tomar métodos privados y convertirlos en funciones que no sean miembros no amigos? Cualquier variable miembro que estos métodos puedan necesitar puede pasarse como parámetros.
Ejemplo (antes):
<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>
Ejemplo (después):
<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>
¿Estoy en el camino correcto? ¿Deberían trasladarse todos los métodos privados a funciones que no sean miembros que no sean amigos? ¿Cuáles deberían ser las reglas que te dirían lo contrario?