se ho molte chiamate di un singolo metodo che restituisce il valore del campo, è meglio creare una variabile locale?

1

In un metodo, ho chiamate di un singolo metodo di un altro oggetto che restituisce il valore del campo, come foo.value() , che è definito come Field value() {return this.value;} È meglio creare una variabile locale, come Field value = foo.value() e usarla. O utilizzare molte chiamate di metodo di un singolo metodo? Perché? In che modo è correlato al numero di chiamate al metodo, come per 3, 5, 10 cosa sarà migliore e perché potrebbe essere una preoccupazione?

Modifica: il campo non cambia in ogni caso durante il flusso di un metodo, solo lo stesso valore sempre.

Modifica2: dipende dal linguaggio di programmazione? Se è importante, è java.

    
posta dhblah 13.06.2013 - 10:37
fonte

2 risposte

4

Per motivi di chiarezza, suggerirei di utilizzare final Field value = foo.value() ( final poiché si specifica che il valore non cambia) se si dispone di più di una singola chiamata di metodo. Per quanto riguarda le prestazioni non ci saranno differenze, il compilatore JIT probabilmente incorpora completamente tutte le chiamate in un semplice metodo accessor.

Ci sono alcuni motivi per preferirlo: la cosa più importante è che mostra chi sta leggendo il codice che stai usando la stessa variabile, e sicuramente non cambia (usando final ). Questo è più chiaro rispetto all'utilizzo di più chiamate di metodi: chiunque lo stia leggendo dovrà inseguire se effettivamente sta usando la stessa cosa ogni volta che si chiama un metodo. Meno importante, se il nome del metodo cambia, deve solo cambiare in un punto qui, invece di doverlo modificare in ogni punto in cui viene utilizzato.

    
risposta data 13.06.2013 - 10:52
fonte
2

Se sei sicuro che il valore non cambia, non c'è ragione di salvarlo in una variabile locale.

Java HotSpot ha la capacità di rilevare tale chiamata ripetuta e inline la chiamata al metodo.

Quindi è più una questione di gusti che altro.

Modifica Anche per la ridenominazione: la maggior parte degli IDE supporta le chiamate al metodo di refactoring.

    
risposta data 13.06.2013 - 10:53
fonte

Leggi altre domande sui tag