Ho incontrato un sacco di codice in cui essenzialmente stanno facendo
void CreateFoo(string foo_param_1, int foo_param_2, vector<Foo> *foo_storage) {
Foo new_foo = FooFactory();
new_foo.set_param_1(foo_param_1);
new_foo.set_param_2(foo_param_2);
foo_storage->push_back(new_foo);
}
Per me questo sembra un design orribile perché ora c'è un misto di preoccupazioni nella creazione e nell'archiviazione di Foo
s. È una pratica comune? Se è così, qualcuno può spiegare perché è buono?
Il mio istinto è che dovrebbe essere
Foo CreateFoo(string foo_param_1, int foo_param_2) {
Foo new_foo = FooFactory();
new_foo.set_param_1(foo_param_1);
new_foo.set_param_2(foo_param_2);
return new_foo;
}
foo_storage.push_back(CreateFoo("hello", 10));