Sto discutendo con il mio collega su quanto lavoro può fare un costruttore. Ho una classe, B che richiede internamente un altro oggetto A. L'oggetto A è uno dei pochi membri di cui la classe B ha bisogno per fare il suo lavoro. Tutti i suoi metodi pubblici dipendono dall'oggetto interno A. Le informazioni sull'oggetto A sono memorizzate nel DB, quindi provo a convalidare e ottenerlo cercando nel DB nel costruttore. Il mio collega ha sottolineato che il costruttore non dovrebbe fare molto altro che catturare i parametri del costruttore. Dato che tutti i metodi pubblici fallirebbero comunque se l'oggetto A non fosse trovato usando gli input per il costruttore, ho sostenuto che invece di consentire la creazione di un'istanza e successivamente fallire, in realtà è meglio lanciare presto nel costruttore.
Cosa pensano gli altri? Sto usando C # se questo fa la differenza.
Lettura C'è mai una ragione per fare tutto il lavoro di un oggetto in un costruttore? mi chiedo di recuperare l'oggetto A andando su DB fa parte di "qualsiasi altra inizializzazione necessaria per rendere l'oggetto pronto per l'uso" perché se l'utente passasse valori errati al costruttore, non sarei in grado di usare nessuno dei suoi metodi pubblici.
I costruttori dovrebbero creare un'istanza dei campi di un oggetto ed eseguire qualsiasi altra inizializzazione necessaria per rendere l'oggetto pronto per l'uso. Questo in genere significa che i costruttori sono piccoli, ma ci sono scenari in cui ciò comporterebbe una notevole quantità di lavoro.