所以我理解ruby中的 attr 语法糖转化为仅定义实例变量和写入/读取它们的方法。
我想知道的是,如果你试图让你的类公共接口最小化,那么设计的最佳实践是什么?除非非常公开,否则你应该避免使用attr_accessor吗? attr_writer和attr_reader如何适应公共/私人可见性?
如果有意义的是,对于经常读取的私有字段使用attr_reader,是否应该自由地使用attr_reader而不是明确定义字段?
答案 0 :(得分:1)
attr方法的目的是允许从实例外部访问实例变量。因此,(过度)使用这种方法已经违背了面向对象的编程。如果您只需要从实例访问它们,从面向对象设计的角度来看这是优选的,您可以直接引用实例变量:
@foo = 3
@foo # => 3
你不应该需要attr方法。