View Single Post
Old 29-07-2005, 22:55   #13
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da end.is.forever
Molto meglio invece inserire nel costruttore solo l'assegnamento dei campi a seconda dei parametri passati; poi, esplicitamente alla chiamata del metodo di inizializzazione, aprire la connessione. Se si scatena lì l'eccezione è tutto un' altro paio di maniche rispetto al costruttore.
Stessa cosa per distruttore.
Non sono d'accorso sul secondo metodo di inizializzazione, perche' non e' altro che una duplicazione di un concetto che gia' esiste (il costruttore). Perche' matenere due metodi (costruttore e metodo di inizializzazione) quando se ne puo' mantenere solo uno (costruttore)?

Ed inoltre usando un metodo di inizializzazione si perde l'automatismo garantito dallo Standard che distrugge automaticamente l'oggetto in caso di eccezione. Con un metodo di inizializzazione, il programmatore deve ricordare di distruggere l'oggetto ed una riga di codice in piu' siginifica una riga in piu' che magari ci si dimentica di scrivere oppure che puo' introdurre un bug

Inoltre, per definizione il costruttore dovrebbe lasciare l'oggetto in uno stato "valido", mentre imporre a cliente dell'oggetto di ricordare di chiamare un'ulteriore metodo per la concludere la costruzione significa imporre un ulteriore complicazione al cliente, complicazione che puo' introdurre un bug (il cliente magari lo dimentica).

Meglio semplificare.
fek è offline   Rispondi citando il messaggio o parte di esso