Existe uma situação possível quando não há problema em usar outros métodos de classe / estrutura extensivamente - quando sua classe / estrutura é um contêiner para dados. Geralmente há um pouco que você pode fazer com esses dados sem contexto externo.
Essas classes ainda podem conter alguma lógica interna, mas mais frequentemente são usadas como contêineres:
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 em sua resposta se refere a este artigo para provar que você não deve usar outros membros da classe extensivamente, mas há outra situação de cheiros de código descrita lá com advogados no meu exemplo:
Lista longa de parâmetros. Limite o número de parâmetros necessários em um determinado método ou use um objeto para combinar os parâmetros.