Ho qualcosa di simile
Class App
Module A
Module B
Module C
Module D
Ciascuno dei moduli ha una sola responsabilità e è ben incapsulato (interfaccia pubblica, implementazione privata).
Il problema è che questi moduli devono fare riferimento l'un l'altro molto. (Non c'è un modo ragionevole intorno a questo, penso.) Ciò ha portato a un sacco di passaggi di parametri ingombranti.
Module A
method(B& b)
method(int i, C& c)
method(bool b, D& d, B& b, C& c)
Che cosa succede se inserisco qualcosa come App& app
all'interno di A
? (E poi inizializza app
appropriatamente.) In questo modo posso solo fare questo:
Module A
public:
method()
method(int i)
method(bool b)
private:
App& app
Sembra più leggibile, sembra abbastanza logico. Sì, è meno prevedibile quali moduli modifichino quali, ma sembra giustificato. O sono solo pigro? Qual è il modo corretto di affrontare questo tipo di problema?