可以为Ruby方法参数和访问器方法使用相同的名称吗?

时间:2010-12-23 20:02:39

标签: ruby

假设我有一个这样的课程:

class Parser
  attr_accessor :config, :html
  def initialize(config, html)
    @config = config
    @html = html
  end
  ...
end

将参数命名为初始化方法与attr_accessors相同是否安全?风格不好吗?什么是更好的风格?

2 个答案:

答案 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实现了词法范围,并且有许多范围限定符。

我猜这是一种相当合理的风格。问题总是有点难以回答,因为在某些方面代码更容易阅读(变量具有最佳名称选择)并且在某些方面更难,因为给定名称意味着两个不同的对象,具体取决于它的使用位置