在明确指定方法目标时,Ruby中是否有最佳实践,即使在不必要时也是如此?
class Foo
def meth1
puts "bar"
end
def meth2
# is this better?
self.meth1
# or this?
meth1
end
end
答案 0 :(得分:8)
不,这只是一个风格问题。
唯一要记住的是,您必须始终为setter方法指定目标。
foo_count = 4 #creates a local variable named foo_count and sets it to 4
self.foo_count = 4 #sends foo_count=(4) to self
如果你碰巧有一个与你的班级方法同名的局部变量,同样的规则适用,不过我会说这本身就是一种不好的做法。
答案 1 :(得分:1)
正如Chuck先前所说的那样,除了他指出的异常以及使用私人方法时,这主要是风格问题。只要您在对象中使用私有方法,就必须离开self.
业务。
例如:
class Tze
def meth2
meth1
end
def meth3
self.meth1
end
private
def meth1
puts "method 1 invoked"
end
end
调用Tze.new.meth2
会产生预期的输出;但是,由于Tze.new.meth3
被调用为meth1
,因此调用self.meth1
会引发错误。