В настоящее время я работаю над книгой Gregory Brown Ruby Best Practices. В начале он говорит о реорганизации некоторых функций из вспомогательных методов в связанном классе, с некоторыми методами на модуле, а затем имеет модуль extend self
.
Не видел, что раньше, после быстрого google, выяснилось, что extend self
в модуле позволяет методам, определенным в модуле, видеть друг друга, что имеет смысл.
Теперь, мой вопрос: когда бы вы сделали что-то вроде этого
module StyleParser
extend self
def process(text)
...
end
def style_tag?(text)
...
end
end
а затем обратитесь к нему в тесте
@parser = Prawn::Document::Text::StyleParser
в отличие от чего-то подобного?
class StyleParser
def self.process(text)
...
end
def self.style_tag?(text)
...
end
end
Это так, что вы можете использовать его как mixin? или есть другие причины, которые я не вижу?