一般来说,创建一个可以从多个方法访问的实例变量或创建一个只作为参数传递给这些方法的实例变量的最佳实践和优点是什么?从功能上讲,它们是等价的,因为这些方法仍然能够使用变量来完成工作。虽然我可以看到一个好处,如果你正在更新变量,并希望返回更新的值,但在我的具体情况下,变量从来没有更新,只有读取每个方法来决定如何操作。
示例代码要清楚:

class Test
  @foo = "something"

  def self.a
    if @foo == "something"
      puts "do #{@foo}"
    end
  end

  a()
end

VS
class Test
  foo = "something"

  def self.a(foo)
    if foo == "something"
      puts "do #{foo}"
    end
  end

  a(foo)
end

最佳答案

我不传递实例变量。它们是实例的状态值。
把它们想象成特定物体DNA的一部分,这样它们就永远是使物体成为它的一部分。如果我调用该对象的方法,它将已经知道如何访问自己的dna,并将在内部执行,而不是通过传入的某个参数。
如果我想对对象应用一些外来的东西,那么我必须通过参数将其传入。

09-11 17:46
查看更多