2011-10-25 18 views
9

Tengo muchos métodos de acción que no necesitan crear una variable de instancia para representar la vista, porque estos métodos solo redirigirán a otras acciones de otros controladores . Me pregunto: ¿es una buena costumbre crear siempre una variable de instancia por el simple hecho de seguir las convenciones de Rails, o no existe tal cosa? Mi intuición es que la variable local reduce los costos de memoria, pero el código no se ve bonito.En rieles, ¿importa usar variable local o variable de instancia en métodos de acción

Respuesta

7

Parcialmente tenemos que utilizar variable de instancia en los casos siguientes,

  1. Cuando necesitamos acceder a la variable de la vista
  2. Si estamos llamando a un método de la acción, en lugar de devolver un valor, puede actualizar directamente la variable desde el método llamado.

¿Por qué deberíamos usar la variable de instancia si nuestro trabajo se puede hacer con una variable local.

+0

Un caso más que podemos hacer uso de la variable de instancia es con el uso del almacenamiento en caché, ejemplo - def total_budget @totoal_budget || = el cálculo va aquí al final – nkm

10

No es una convención crear variables de instancia si no se envían a la vista.

  • Las variables deben tener el alcance más estrecho posible.
  • Deben ser locales si no se pasan a la vista.
  • Use un presentador si tiene un "montón" de datos de visualización (en lugar de una tonelada de vars de instancia).

Las variables de instancia pueden ser utilizados si varios métodos actúan sobre ellos antes de la vista, incluso si no se usan en la vista, pero esto hace que el código mucho más difícil de razonar acerca de la prueba y de manera aislada .

Si se encuentra usando variables de instancia para mantener cálculos intermedios, probablemente necesite replantear su flujo y/o diseño.

+0

Además, al usar vars de instancia donde los vars locales harían, se conservará la referencia de memoria más tiempo de lo necesario. Para mantenerse delgado es beneficioso por una variedad de razones. – Midwire

4

La única razón por la que utiliza variables de instancia en los controladores es obtener cosas en la vista sin tener que pasar explícitamente un montón de estado alrededor.

Si no tiene ningún estado, entonces no tiene variables de instancia, por lo que no hay motivo para usarlas.

Cuestiones relacionadas