假设我有一个这样的课程:
class Parser
attr_accessor :config, :html
def initialize(config, html)
@config = config
@html = html
end
...
end
将参数命名为初始化方法与attr_accessors相同是否安全?风格不好吗?什么是更好的风格?
答案 0 :(得分:7)
这样做是完全安全的,而且我一直这样做。但是,我认为设置像这样的对象属性是一种更好的风格:
class Parser
attr_accessor :config, :html
def initialize(config, html)
self.config = config
self.html = html
end
...
end
执行此操作时,您的代码将使用attr_acessor提供的setter方法。这样,您始终可以使用一致的方式访问变量。
答案 1 :(得分:1)
Ruby实现了词法范围,并且有许多范围限定符。
我猜这是一种相当合理的风格。问题总是有点难以回答,因为在某些方面代码更容易阅读(变量具有最佳名称选择)并且在某些方面更难,因为给定名称意味着两个不同的对象,具体取决于它的使用位置