Sarebbe piuttosto inusuale nel software moderno avere 25 variabili libere su una funzione di chiamata, e quindi passarle esplicitamente a un metodo o un ctor.
Nella maggior parte dei casi, in una progettazione OO, queste variabili sarebbero invece già inserite in una classe (o in alcune classi), raggruppate in base alle loro responsabilità logiche.
E dal momento che Java
passa oggetti per riferimento, il passaggio di un riferimento a un singolo oggetto sullo stack potrebbe avere alcuni vantaggi in termini di prestazioni (un numero inferiore di variabili da inviare allo stack). Tuttavia il vero vantaggio sarebbe la leggibilità e la manutenzione del codice.
Occorre tuttavia notare che fare ciò richiederebbe che la classe dell'oggetto che viene passato sia condivisa tra consumatore e servizio: questo potrebbe essere un problema, a seconda di cosa la classe di trasferimento sta modellando (ad esempio, è un trasferimento di dati Oggetto, entità aziendale, modello di vista, oggetto di serializzazione XML/JSON, ecc.). Se il tipo di condivisione tra caller e callee violerebbe la tua architettura, allora tipicamente mapperai le 25 variabili in un'altra classe canonica (o classi, ancora osservando i problemi di refactoring SRP) e passerai invece a questi (questi). A questo punto, non ci saranno benefici per le prestazioni, ma il vantaggio di leggibilità/manutenibilità verrà mantenuto.
di passaggio che molti parametri di un costruttore è un odore di codice comunque prescindere prestazione. Con tutti questi parametri, è molto probabile che si verifichi un errore (ad esempio, l'inversione di due parametri dello stesso tipo). –
http://stackoverflow.com/questions/5727336/performance-of-variable-argument-methods-in-java, che dovrebbe aiutarti. –
Suggerirei di profilare vari aspetti della vostra applicazione per identificare dove sono effettivamente i colli di bottiglia prima di tentare di ottimizzare. Ad esempio, qualsiasi cosa riguardi l'accesso alla rete, le query del database scritte male, ecc. – Romski