2011-10-25 5 views
9

Ho molti metodi di azione che non hanno bisogno di creare una variabile di istanza per il rendering della vista, perché questi metodi reindirizzano solo ad altre azioni da altri controllori . Mi chiedo: è una buona abitudine creare sempre variabili di istanza per il rispetto delle convenzioni di Rails, o non esiste una cosa del genere. La mia intuizione è che la variabile locale riduce i costi di memoria, ma il codice non sembra carino.Nelle rotaie, è importante utilizzare la variabile locale o la variabile di istanza nei metodi di azione

risposta

7

Per lo più abbiamo bisogno di usare variabile di istanza in casi seguenti,

  1. Quando abbiamo bisogno di accedere alla variabile dal punto di vista
  2. Se stiamo chiamando un metodo dall'azione, invece di restituire un valore, abbiamo può aggiornare direttamente la variabile dal metodo chiamato.

Perché dovremmo utilizzare la variabile di istanza se il nostro lavoro può essere eseguito con una variabile locale.

+0

Un altro caso che possiamo fare uso della variabile di istanza è con l'uso della memorizzazione nella cache, esempio: def total_budget @totoal_budget || = il calcolo va qui fine – nkm

10

Non è una convenzione per creare variabili di istanza se non vengono inviate alla vista.

  • Le variabili devono avere l'ambito più stretto possibile.
  • Dovrebbero essere locali se non vengono passati alla vista.
  • Utilizzare un presentatore se si dispone di un "lotto" di dati di visualizzazione (invece di una tonnellata di vars di istanza).

variabili di istanza possono essere utilizzati se più metodi agiscono su di loro prima di la vista, anche se non sono utilizzati per la vista, ma questo rende il codice molto più difficile ragionare su e prova in isolamento .

Se ti trovi a utilizzare variabili di istanza per conservare i calcoli intermedi, probabilmente devi ripensare il flusso e/o il progetto.

+0

Inoltre, l'utilizzo di vars di istanza in cui le variabili locali farebbero, mantiene il riferimento di memoria più a lungo del necessario. Per rimanere magra è utile per una serie di motivi. – Midwire

4

L'unico motivo per cui si utilizzano le variabili di istanza nei controller è ottenere le cose nella vista senza dover passare in modo esplicito una pila di stato.

Se non si dispone di uno stato, non si dispone di variabili di istanza, quindi non vi è alcun motivo per utilizzarle.

Problemi correlati