为什么`class<<自我比`class<<更常见Foo`用于打开类对象的特征类?

时间:2014-07-16 19:01:17

标签: ruby coding-style eigenclass

Ruby程序员通常使用class << self inside a class body来打开类对象的本征类,如下所示:

class Foo
  class << self
    # ...
  end
end

但是,我很少看到这种等效形式(假设Foo已被定义为一个类):

class << Foo
  # ...
end

是否有理由将第一种风格改为第二种风格?

1 个答案:

答案 0 :(得分:3)

使用class << Foo时,或明确定义def Foo.some_method(args)时,您正在重复该类的名称。

使用class << self是DRYer,使重构更容易(更改类名在一个地方完成,不必在代码中重复),以及复制+粘贴到其他类/项目

class Foo1
  # ..
end

class << Foo # <- :(
  #..
end