Quando si progetta un'applicazione basata su OOP, si dovrebbe preferire il trasferimento di informazioni tra oggetti tramite oggetti complessi che fanno un sacco di lavoro di gestione, o dovrei prima recuperare i dati dall'oggetto holding e passare molti argomenti nella chiamata ?
Prendi, ad esempio, un'applicazione che fa econometria di timeseries e ha bisogno di trasferire un elenco di date come disponibile nel set di dati. Usando il primo approccio, consegnerei un handle all'intero oggetto dataset, che a sua volta contiene un oggetto-calendario, che contiene oggetti data. Tutti questi oggetti gestiscono diverse parti della funzionalità data, assegni di vacanza, ecc. All'interno dell'oggetto ricevente, la chiamata sarebbe in qualche modo simile a questa:
xlDate = MyDataset.MyCalendar.MyDate.convertToXlsFormat()
Mentre, ovviamente, ciò accadrebbe prima nell'altro caso, e xlDate sarebbe semplicemente un argomento.
Ora vedo che, in generale, l'accoppiamento stretto è cattivo e questo sembra un po 'stretto. Tuttavia, scrivo software scientifico, quindi i miei utenti sono sempre programmatori che di solito estendono il programma. Per loro, avere tutte le maniglie disponibili significa meno cambiamenti e meno di cui preoccuparsi.
Pensa a una situazione in cui avresti bisogno di prezzi azionari di ieri anziché di oggi. Nella prima situazione, un programmatore potrebbe facilmente adattare la funzione originale e sostituirla (dato che è possibile memorizzare funzioni in variabili in Matlab, che possono essere fatte da un file di configurazione), mentre nel secondo, avrebbe bisogno di aggiungere un controlla il flusso verso la funzione chiamante, e quindi aumenta la 'portata della responsabilità', se vuoi chiamarla così, il programmatore ha bisogno di un modello mentale più grande della sua funzione specifica.
Ho pensato anche a un wrapper, ma penso che sia solo il peggiore di entrambi: un oggetto enorme consegnato al wrapper, e la tua funzione originale si estende anche al wrapper. Non vedo i benefici qui.
Quindi: quanto è grande la dimensione e quanto profonda la nidificazione è troppo profonda?