Existe una posible situación en la que está bien usar otros métodos de clase / estructura extensivamente, cuando su clase / estructura es un contenedor de datos. Por lo general, es poco lo que puede hacer con estos datos sin contexto externo.
Estas clases aún pueden contener cierta lógica interna, pero más a menudo se usan como contenedores:
class YourUid {
public:
YourUid(int id_in_workplace_, int id_in_living_place_, DB* FBI_database, int id_in_FBI_database);
bool IsInvalidWorker() const { return id_in_workplace == consts::invalid_id_in_workplace; }
bool CanMessWith() const { return !FBI_database_.is_cool(id_in_FBI_database_); }
int id_in_workplace;
int id_in_living_place;
private:
int id_in_FBI_database_;
const DB* FBI_database_;
};
@jhewlett en su respuesta se refiere a este artículo para demostrar que no debe usar a otros miembros de la clase de forma extensiva, pero hay otra situación code smells descrita allí con los defensores de mi ejemplo:
Lista de parámetros larga. Limite el número de parámetros que necesita en un determinado
Método, o utilice un objeto para combinar los parámetros.