Il class<<self
sembra essere una falsa pista, in quanto l'unica differenza qui è una classe contro un modulo. Forse stai chiedendo "Voglio creare un oggetto che non intendo istanziare, ma che esiste solo come spazio dei nomi per alcuni metodi (e possibilmente come un singleton con il proprio stato globale)."
Se questo è il caso, entrambi funzioneranno altrettanto bene. Se c'è qualche possibilità che si potrebbe desiderare di creare un derivato (un altro oggetto che eredita gli stessi metodi) allora si dovrebbe usare una classe come leggermente è più facile scrivere:
class Variation < Helper
invece di
module Helper
module OwnMethods
# Put methods here instead of class << self
end
extend OwnMethods
end
module Variation
extend Helper::OwnMethods
Tuttavia, per il solo namespacing generalmente utilizzo un modulo su una classe, in quanto una classe implica che si verificherà l'istanziazione.
Uno di questi ha una lettera in più rispetto all'altra? :) Cosa intendi con "c'è una differenza"? Uno è una classe, uno è un modulo e in entrambi stai entrando nell'eigenclass. – Phrogz
Penso che intendo chiedere, quando useresti l'uno sull'altro. Ho modificato la domanda per riflettere questo. –