È buona pratica creare una nuova variabile per vedere l'output di una funzione?

6

Considera questi 2 tipi di implementazione:

public int add(int x, int y) {
    return mysteriousAdd(x, y);
}


public int add(int x, int y) {
    int output = mysteriousAdd(x, y);
    return output;
}

Un mio collega dice che la seconda implementazione è migliore perché durante il debug vediamo la variabile che mysteriousAdd restituisce e non è un sovraccarico per creare quella variabile extra nello stack. Penso che la prima implementazione sia migliore e il suo punto non è così valido perché oggi molti compilatori possono mostrare quale sia la risposta della funzione durante il debug senza la variabile extra e stiamo anche evitando la creazione di variabili extra nello stack.

La creazione di una variabile di riferimento nello stack è un'operazione a basso costo? Quale dei due metodi sopra elencati suggeriresti sarebbe meglio per la codifica e perché?

    
posta kai 11.12.2018 - 17:25
fonte

1 risposta

14

Se confronti l'output assembly / bytecode / IL / etc di due funzioni del genere, dovresti trovarle entrambe uguali. Tutti tranne la maggior parte dei compilatori di database ottimizzeranno il valore extra.

Quindi qualsiasi considerazione relativa a prestazioni / memoria dovrebbe essere eliminata.

Quindi, fai la tua scelta sulla leggibilità. Nell'esempio, non c'è davvero alcun valore per identificare il valore di ritorno prima di ritornare. Tuttavia, se ci si trova in fondo a un calcolo di 20 linee o qualcosa del genere, spesso può valerne la pena di creare il valore con nome prima di tornare, poiché quel nome può indicare a un lettore informazioni su ciò che il calcolo dovrebbe comportare. / p>     

risposta data 11.12.2018 - 17:36
fonte

Leggi altre domande sui tag