Ruby实例变量访问
问题描述:
只要好奇,在假设attr_accessor被设置的情况下,从类内部访问实例变量的最佳做法是什么。Ruby实例变量访问
class Test
attr_accessor :user
def initializer(user)
@user = user
end
def foo
@user
end
end
或
class Test
attr_accessor :user
def initializer(user)
@user = user
end
def foo
self.user
end
end
通过实例变量(@user)或吸气剂的方法(试验#用户)
所以?
答
Getter方法,因为它更容易重构。假设你想在访问点更新时间戳。
class Test
def user
@user.last_read = Time.now
@user
end
end
并且所有对user
的引用都用新逻辑更新。如果您的参考文献是@user
,则不那么容易。
这个想法是红宝石不可知的。请参阅http://stackoverflow.com/questions/3069901为什么属性应该优于字段。 – Gishu 2012-01-11 05:14:55
如果仅添加attr_accessor以供内部使用,该怎么办?我不需要这些属性来进行外部访问,所以在那个时候,添加attr_accessor是不必要的,因此在内部使用实例变量来获取/设置更有意义? – user577808 2012-01-11 12:20:24
@ user577808在类中应用相同的原则,但上下文越小,重要性越低,因为重构更容易。但是,最好公开一个类的最小接口,所以在这种情况下,如果使用get/set,它应该是私有的。 – Mori 2012-01-11 14:25:31