Non è più veloce. Sembra essere basato sul presupposto che un metodo può essere in linea ma un costruttore non può. Sfortunatamente non ha senso, quindi l'intero punto esce dalla finestra.
Anche se fosse più veloce, sarebbe quasi certamente una cattiva idea. Il codice non dovrebbe essere ottimizzato a scapito della leggibilità, tranne in circostanze estreme in cui ogni ultimo ciclo della CPU è critico, e in tal caso è improbabile che si stia utilizzando Java.
In realtà, questo è peggio di essere solo più difficile da leggere. Il prossimo refactoring sarà inevitabilmente per il costruttore Test
per chiamare il metodo init()
, in modo che non debba essere sempre fatto manualmente (e farlo manualmente è un problema e una potenziale fonte di bug se viene dimenticato); ed è una cattiva pratica se un costruttore chiama un metodo che può essere sovrascritto, perché una sottoclasse potrebbe inavvertitamente cambiare ciò che accade al momento della costruzione quando viene chiamato il costruttore della superclasse (vedere this question per maggiori dettagli). Quando questo accade, una sottoclasse di Test
all'interno dello stesso pacchetto sarà in grado di eseguire l'override del metodo init()
, e poi quando la sottoclasse invoca super()
, implicitamente o esplicitamente, il costruttore della superclasse finirà chiamando il sovrascrittoinit()
. (Questo particolare problema potrebbe essere eliminato dichiarando init()
per essere private
.)
Non farlo.
fonte
2015-01-06 16:14:19
Chiedi all'autore. –
Nulla ottimizza nulla nel tuo codice .. – Maroun
Come si suppone che funzioni? – Natix