(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.*
?
2.或者宣布一个班级而不是一个模块会更好吗?
3.或者使用class << self
(在模块或类中)?
还是别的什么呢?
我意识到这是一个非常开放的问题,但我真的只是想听听人们在做什么。
答案 0 :(得分:8)
我更喜欢
module Foo
def self.bar
"bar"
end
end
Foo.bar #=> "bar"
或
module Foo
def Foo.bar
"bar"
end
end
Foo.bar #=> "bar"
但可能倾向于前者,我认为self.
真的是描述性的。
编辑:在阅读评论后,我提出了第三个选项,我更喜欢它的可读性。从技术上讲,我认为这将被定义为扩展Eigen类中包含的方法。
module Foo
module ClassMethods
def baz
"baz"
end
end
extend ClassMethods
end
Foo.baz #=> "baz"