Cosa devo fare con troppe interfacce necessarie per una finestra di dialogo

0

Vorrei iniziare facendo un piccolo riepilogo delle modifiche apportate al nostro codice nell'ultimo anno. Abbiamo un software (MOLTO grande) che viene utilizzato per visualizzare reti sotterranee multiple, immettere i dati nelle entità della rete e creare la simulazione in questa rete.

Nei 20 anni di sviluppo di questa applicazione (in MFC C ++), più persone ci hanno lavorato, sono state fatte molte patch ed è in costante sviluppo. Nel corso dell'anno è stata creata una classe mostro. La classe si chiama "CNetwork" e ogni rete è una sottoclasse di essa.

Per illustrare questo momento nella cronologia del codice, il prototipo di un tipico dialogo era questo:

public SuperNiceDialog(int nID, CNetwork* pNetwork);

Dopo un corso sui test delle unità, per me era ovvio che dovevamo creare un'interfaccia per rendere tutto più controllabile. Poiché la maggior parte della nostra "funzionalità" era presente nella rete, CNetwork ne stava implementando molti e ora quando abbiamo bisogno di chiamare la stessa finestra di dialogo, sembra che questo:

public SuperNiceDialog(int nID, ITranslateNetwork* pTranslate,
                        IUnitManager* pUnitManager,
                        ICommonVectorProviderAQ* pCommonVectorProviderAQ,
                        INetworkInfo* pNetworkInfo,
                        IDatabaseManager* pDatabaseManager,
                        ISimulation* pSimulation,
                        INetworkAutonumerotation* pNetworkAutonumerotation,
                        ISpreadsheetInfoProvider* pChiffrierInfoProvider,
                        IPolygonManager* pPolygonManager,
                        ISetterValidation* pSetterValidation)

Non eseguirò un test unitario di una finestra di dialogo, ma un sacco di classi chiamate in questa finestra di dialogo potrebbero essere testate, ma per la maggior parte di esse devo passare molte interfacce per fare il lavoro. E non posso giustificare il passaggio della rete perché alcune delle interfacce vengono rimosse da CNetwork per rimuovere lentamente la funzionalità da una singola classe.

Quindi ci pensiamo e una delle idee che avevamo era creare un oggetto "pacchetto" che potesse essere una semplice struttura contenente puntatori alle interfacce e getter per ottenere l'accesso a questi puntatori (come un oggetto di facciata). Ad esempio

La mia finestra di dialogo verrebbe chiamata così

public SuperNiceDialog(int nID, CDialogInterfacePackage* pPackage)

E nel codice, lo userei in quel modo

m_pPackage->GetITranslation()->Translate(123456);

Dato che la maggior parte della finestra di dialogo ha bisogno della stessa interfaccia, potremmo inserire 10 interfacce e passarla alla finestra di dialogo. Potremmo creare "pacchetto di interfaccia" per vari moduli, ad esempio per la simulazione, il foglio di calcolo, ecc.

Una parte di me pensa che sia una buona idea, ma un'altra parte mi sta dicendo che creerò lentamente un nuovo "CNetwork" in qualche modo ... Qualche idea su questo problema di avere troppe interfacce? È un buon approccio?

Grazie

    
posta Jean-François Côté 21.03.2014 - 18:14
fonte

0 risposte

Leggi altre domande sui tag