Ruby中命名空间函数的最佳做法(新手问题)

前端之家收集整理的这篇文章主要介绍了Ruby中命名空间函数的最佳做法(新手问题)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
(StackOverflow告诉我这个问题是“主观的,很可能被关闭”…好吧,我会给它一个镜头,不管)

我正在编写一堆帮助方法(对于TextMate包),我想(我需要)让它们整齐地命名空间.

这些方法实际上只是功能,即它们不在任何范围之外的任何操作,因此并不属于一个类.没有什么需要实例化.

到目前为止,我一直在做这件事,工作很好

module Helpers::Foo
    module_function
    def bar
        # ...
    end
end
Helpers::Foo.bar # this is how I'd like to call the method/function

但是最好是:
1.跳过module_function并声明方法/函数为self.*?
或者更好的是声明一个类而不是一个模块?
或者使用类<<自我(在一个模块或一个类内)?
还是别的什么?

我知道这是一个很开放的问题,但我真的只是想听听人们在做什么.

解决方法

我也喜欢
module Foo
  def self.bar
    "bar"
  end
end

Foo.bar #=> "bar"

要么

module Foo
  def Foo.bar
    "bar"
  end
end

Foo.bar #=> "bar"

但可能倾向于前者,我认为自我.真的是描述性的.

编辑:阅读评论后,我提出了第三个选项,我更喜欢可读性.从技术上讲,我认为这将被定义为扩展Eigen类中包含的方法.

module Foo
  module ClassMethods
    def baz
      "baz"
    end
  end
  extend ClassMethods
end

Foo.baz #=> "baz"

猜你在找的Ruby相关文章