最近我一直在阅读"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方法而不是直接使用=
运算符来设置实例变量的值?