Un collega e io stavamo discutendo su dove mettere la responsabilità di un oggetto di memorizzare se stesso sul disco nel nostro formato di file. Ci sono fondamentalmente due scelte:
- object.store (file)
- fileformatWriter.store (oggetto)
Il primo attribuisce la responsabilità della serializzazione sul disco all'oggetto stesso. Questo è simile all'approccio usato da pickle python.
Il secondo raggruppa la responsabilità di rappresentazione su un oggetto writer formato file. L'oggetto dati è solo un semplice contenitore di dati (eventualmente con metodi aggiuntivi non rilevanti per la memorizzazione).
Abbiamo concordato la seconda metodologia, perché centralizza la logica di scrittura dai dati generici. Abbiamo anche casi di oggetti che implementano una logica complessa che ha bisogno di memorizzare informazioni mentre la logica è in corso. In questi casi, l'oggetto fileformatwriter può essere passato e utilizzato come delegato, chiamando su di esso le operazioni di archiviazione. Con il primo modello, l'oggetto logico complesso accetta invece il file raw e implementa la logica di scrittura stessa.
Il primo metodo, tuttavia, ha il vantaggio che l'oggetto sa come scrivere e leggere se stesso da qualsiasi file che lo contiene, il che può anche essere conveniente.
Mi piacerebbe sentire la tua opinione prima di iniziare un refactoring piuttosto complesso.