Existe una posible situación en la que está bien usar ampliamente otros métodos de clase / estructura, cuando su clase / estructura es un contenedor de datos. Por lo general, hay algo que puede hacer con estos datos sin contexto externo.
Dichas clases aún pueden contener algo de lógica interna, pero con mayor frecuencia 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 ampliamente a otros miembros de la clase, pero hay otra situación de olores de código descrita allí con defensores de mi ejemplo:
Lista larga de parámetros. Limite el número de parámetros que necesita en un método determinado, o use un objeto para combinar los parámetros.