Questi i due approcci:Costruttore con tutte le proprietà di classe o costruttore predefinito con setter?
- costruttore con tutte le proprietà della classe
Pro: devo mettere un numero esatto di tipi di parametri così se faccio un errore del compilatore mi avverte (a proposito, c'è un modo per prevenire il problema di avere erroneamente commutato due interi nella lista dei parametri?)
Contro: se ho molte proprietà la linea di istanziazione può diventare davvero lunga e potrebbe estendersi su due o più linee
- setter e il costruttore vuoto di default
Pro: posso vedere chiaramente quello che sto impostando, quindi se sto facendo qualcosa di sbagliato che posso individuare non appena sto scrivendo di esso (Non riesco a fare l'errore precedente di commutare due variabili dello stesso tipo)
Contro: l'istanziazione di un oggetto con molte proprietà potrebbe richiedere più righe (non so se questo è davvero un problema) e se Ho dimenticato di impostare una proprietà, il compilatore non dice nulla.
Cosa farai e perché? Sei a conoscenza di qualsiasi schema di luce (considera che dovrebbe essere usato ogni volta che un oggetto con le proprietà 7+ viene istanziato) per suggerire? Lo chiedo perché tendo a non gradire i grandi costruttori in cui non riesco a capire velocemente dove è la variabile che sto cercando, d'altra parte trovo che "imposta tutte le proprietà" sia vulnerabile alla mancanza di alcune proprietà .
Sentitevi liberi di argomento mie ipotesi in pro e contro in quanto sono solo pensieri miniera :)
Aggiornamento - una domanda che ho trovato che è legato a questo: Building big, immutable objects without using constructors having long parameter lists
Grazie per il codice esplicativo –
I builder sono davvero utili se si dispone di un oggetto complesso. Posso fortemente raccomandarlo. –
e il libro! È davvero una lettura obbligata per i programmatori Java - è disponibile su O'Reilly Safari che è dove l'ho letto (abbiamo la sottoscrizione più piccola) –