C'è una possibile situazione quando è OK usare estensivamente un altro metodo class / struct - quando la tua classe / struct è un contenitore per i dati. Di solito c'è un po 'che puoi fare con questi dati senza contesto esterno.
Tali classi possono ancora contenere una logica interna, ma più spesso vengono utilizzate come contenitori:
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 nella sua risposta si riferisce a questo articolo per dimostrare che non dovresti usare estensivamente altri membri della classe, ma c'è un'altra situazione di codice odori descritta qui con il mio esempio:
Long Parameter List. Limit the number of parameters you need in a given
method, or use an object to combine the parameters.