2006 年 4 月 25 日,星期二

使用 params,而不是 @params

发布者:marcel

我经常在 #rubyonrails 通道看到有人在代码中使用 @params。一段时间以来,@params 已被弃用,建议使用简单的 params。对于那些只是略读博客文章的人们

使用 params,而不是 @params

为什么?当使用 params 方法时,它可以更改参数哈希的实现细节而无需中断现有代码。如果 params 的实现发生更改,则无需更改代码,因为参数的单一访问点仍然是 params 方法。因此,发生在后台的细节并不重要。然而,如果你直接使用 @params 实例变量,那么就破坏了封装,并因此破坏了轻松修改实现的能力。方法可以进行重构,但实例变量不能。今天,params 方法只是包装 @params 实例变量,因此仍然可以使用 @params,但这并不能保证始终如此。

对于 requestresponsesessionheaderstemplatecookiesflash 也是如此。

基本上,一个好的经验法则是,不要在控制器或视图中使用实例变量,除非是你创建了该实例变量。

甚至布局中的旧 @content_for_layout 也已弃用,建议只使用 yield 代替它。而且,现在通过 yield :some_fragment 访问 content_for(‘some_fragment’),而不是通过 @content_for_some_fragment