Herb Sutter сказал, что наиболее объектно-ориентированный способ написания методов в С++ использует не-членные функции, отличные от друга. Должно ли это означать, что я должен принимать частные методы и превращать их в не-членские функции, отличные от друга? Любые переменные-члены, которым могут понадобиться эти методы, могут быть переданы как параметры.
Пример (до):
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;
};
Пример (после):
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;
};
Я на правильном пути? Следует ли перенести все частные методы в функции, отличные от других? Какими должны быть правила, которые говорили бы вам иначе?