Cosa sarebbe meglio? Per aggiungere un'altra variabile locale o per chiamare un metodo due volte in generale?

0

Ho il metodo che restituisce java.util.Date nella classe hibernate-entity:

package ua.com.winforce.loto_partner.commons.db.entity;

@Entity
@Table(schema = "pr", name = "publice")
public class Pr {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private int id;

    @Column(name = "reg_date")  
    private Date regDate;

    //GET, SET
}

E in un metodo ho bisogno di creare la variabile locale che sarà trattenuta getRegDate(); value, o di invocare quel metodo due volte. Cosa sarebbe più appropriato in quel caso? Voglio dire, nel primo caso stiamo potenzialmente chiudendo il momento in cui GC verrà attivato, ma nel primo tempo sprechiamo il nostro tempo alla seconda invocazione del metodo.

    
posta St.Antario 24.12.2014 - 12:31
fonte

1 risposta

3

Ci sono tre ragioni per cui * memorizza nella cache una funzione restituita in una variabile:

  • Sai o sospetti che la funzione abbia effetti collaterali.
  • La funzione può restituire valori diversi per ogni chiamata e hai bisogno di un risultato coerente. Normalmente ciò è dovuto al fatto che la funzione ha effetti collaterali, ma può anche essere dovuta alla lettura di dati volatili.
  • La chiamata a una funzione ripetuta renderebbe il codice meno chiaro. Questo è il refactoring della "variabile esplicativa dell'estrazione"

Il tuo esempio non sembra adatto a nessuno di questi casi.

* c'è un quarto, ma è riservato a Doug Lea e Martin Thompson, ed è probabilmente una combinazione di # 1 e # 2.

    
risposta data 24.12.2014 - 13:56
fonte

Leggi altre domande sui tag