【发布时间】:2013-12-31 02:15:33
【问题描述】:
最近我一直在阅读“Ruby 中的实用面向对象设计”,我注意到最佳实践之一是使用访问器方法而不是直接获取@instance_variable。例如:
class Foo
attr_accessor :bar
def initialize(my_argument)
@bar = my_argument
end
# bad
# def lorem_ipsum
# @bar * 999
# end
# good
def lorem_ipsum
bar * 999
end
end
保持事物干燥是有意义的,并且,如果我需要在实际获取其价值之前以某种方式处理@bar。但是,我注意到initialize 方法直接设置了@bar 实例变量的值:
class Foo
attr_accessor :bar
def initialize(my_argument)
@bar = my_argument #<-- why isn't self.bar = my_argument used here?
end
这是有原因的吗?不应该用setter方法代替直接使用=操作符来设置实例变量的值吗?
【问题讨论】: