Ruby Style Guide表示使用self.method_name比使用class method_name更好.但为什么呢?

class TestClass
  # bad
  class << self
    def first_method
      # body omitted
    end

    def second_method_etc
      # body omitted
    end
  end

  # good
  def self.first_method
    # body omitted
  end

  def self.second_method_etc
    # body omitted
  end
end

是否存在性能问题?

推荐答案

class << self很擅长将所有类方法保持在同一个块中.如果方法是以def self.method的形式添加的,那么就不能保证(除了约定和一厢情愿之外)文件中不会隐藏额外的类方法.

def self.method善于明确地说明方法是类方法,而class << self则需要自己go 寻找容器.

其中哪一项对您来说更重要是一个主观决定,还取决于有多少其他人在编写代码以及他们的偏好.

Ruby相关问答推荐

类 SpecificationPolicy 的超类不匹配

Ruby 中无法解释的撬动行为

Rails 3 - 限制资源路径中的操作格式

Ruby 中的内联注释

按可能为 nil 的属性对对象的 ruby​​ 数组进行排序

如何将 STDOUT 捕获到字符串?

Ruby 哈希默认值行为

如何删除字符串中的重复空格?

仅针对特定参数的 Rspec 存根方法

无法正确自动生成 Ruby DevKit 配置文件

以条件方式构建哈希

你能用 Ruby 开发原生 iPhone 应用程序吗?

在Ruby中实现平等的正确方法是什么

将Elastic search限制设置为无限制

在命名包含多个单词的Ruby 时,是否应该使用破折号或下划线?

判断字符串是否为空的Ruby方法?

rbenv install --list 不列出 2.1.2 版本

Ruby 方法to_sym有什么作用?

Ruby 异常 - 为什么是else?

不能在windows上安装thin