【问题标题】:In rails, does it matter to use local variable or instance variable in action methods在rails中,在动作方法中使用局部变量或实例变量是否重要
【发布时间】:2011-12-14 16:08:22
【问题描述】:

我有很多不需要创建实例变量来渲染视图的操作方法,因为这些方法只会重定向到来自其他控制器的其他操作。我想知道:为了遵循 Rails 的约定而总是创建实例变量是一个好习惯,还是没有这样的事情。我的直觉是,局部变量降低了内存成本,但代码看起来并不漂亮。

【问题讨论】:

    标签: ruby-on-rails instance-variables


    【解决方案1】:

    如果没有将实例变量发送到视图,则创建实例变量不是惯例。

    • 变量的范围应尽可能小。
    • 如果没有传递到视图,它们应该是本地人。
    • 如果您有“大量”视图数据(而不是大量实例变量),请使用演示者。

    实例变量可以在多个方法作用于它们的情况下视图中使用,即使它们没有在视图中使用,但这会使代码更加困难单独推理和测试。

    如果您发现自己使用实例变量来保存中间计算,您可能需要重新考虑您的流程和/或设计。

    【讨论】:

    • 另外,使用本地变量可以使用的实例变量,保持内存引用的时间超过了必要的时间。出于多种原因,保持苗条是有益的。
    【解决方案2】:

    在控制器中使用实例变量的唯一原因是无需显式传递大量状态即可将内容放入视图中。

    如果你没有任何状态,那么你就没有任何实例变量,所以没有理由使用它们。

    【讨论】:

      【解决方案3】:

      在以下情况下,我们大多需要使用实例变量,

      1. 当我们需要从视图中访问变量时
      2. 如果我们从动作中调用一个方法,而不是返回一个值,我们可以直接从被调用的方法中更新变量。

      如果我们的工作可以使用局部变量来完成,为什么还要使用实例变量。

      【讨论】:

      • 我们可以使用实例变量的另一种情况是使用缓存,例如 - def total_budget @totoal_budget ||= 计算在这里结束
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多