Actualmente estoy trabajando en el libro Gregory Brown Ruby Best Practices. Al principio, él está hablando de la refacturación de algunas funcionalidades de los métodos de ayuda en una clase relacionada, a algunos métodos en el módulo, y luego tenía el módulo extend self
.Cuándo usar un módulo y cuándo usar una clase
No había visto eso antes, después de un google rápido, descubrió que extend self
en un módulo permite que los métodos definidos en el módulo se vean unos a otros, lo que tiene sentido.
Ahora, mi pregunta es ¿cuándo hacer algo como esto
module StyleParser
extend self
def process(text)
...
end
def style_tag?(text)
...
end
end
y luego referirse a él en las pruebas con
@parser = Prawn::Document::Text::StyleParser
en contraposición a algo como esto?
class StyleParser
def self.process(text)
...
end
def self.style_tag?(text)
...
end
end
es para que pueda usarlo como mixin? o hay otras razones por las que no estoy viendo?
Exactamente lo que estaba buscando :-) –