在rails中,在action方法中使用局部变量还是实例变量重要吗

发布于 2024-12-11 17:55:19 字数 131 浏览 0 评论 0原文

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

I have a lot action methods which do not need to create instance variable for rendering the view, because these method will only redirect to other actions from other controllers. I am wondering: is it a good habit to always create instance variable for the sake of following the conventions of Rails, or there is no such thing. My intuition is that local variable reduces memory costs, but the code does not look pretty.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

秋千易 2024-12-18 17:55:19

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

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

如果多个方法在视图之前对实例变量进行操作,则可以使用实例变量,即使它们没有在视图中使用,但这会使代码更难推理并进行隔离测试。

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

It's not a convention to create instance variables if they're not being sent to the view.

  • Variables should have the narrowest scope possible.
  • They should be locals if they're not passed to the view.
  • Use a presenter if you have a "lot" of view data (instead of a ton of instance vars).

Instance variables may be used if multiple methods act on them before the view, even if they're not used in the view, but this makes the code much harder to reason about and test in isolation.

If you find yourself using instance variables to hold intermediate calculations you probably need to rethink your flow and/or design.

伊面 2024-12-18 17:55:19

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

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

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

Mostly we need to use instance variable in following cases,

  1. When we need to access the variable from view
  2. If we are calling a method from the action, instead of returning a value, we can directly update the variable from the called method.

Why should we use instance variable if our job can be done with a local variable.

人海汹涌 2024-12-18 17:55:19

在控制器中使用实例变量的唯一原因是将事物放入视图中,而不必显式传递一堆状态。

如果您没有任何状态,那么您就没有任何实例变量,因此没有理由使用它们。

The only reason you use instance variables in controllers is get things into the view without having to explicitly pass a pile of state around.

If you don't have any state, then you don't have any instance variables so there's no reason to use them.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文