Die class<<self
scheint ein Ablenkungsmanöver zu sein, da der einzige Unterschied hier eine Klasse gegenüber einem Modul ist. Vielleicht fragen Sie "Ich möchte ein Objekt erstellen, das ich nicht instanziieren möchte, das aber nur als Namespace für einige Methoden (und möglicherweise als Singleton mit eigenem, globalem Status) existiert."
Wenn dies der Fall ist, funktionieren beide gleich gut. Wenn es eine Chance, dass Sie ein Derivat (ein anderes Objekt den gleichen Methoden erben) erstellen möchten, dann sollten Sie eine Klasse verwenden, da es etwas einfacher ist, zu schreiben:
class Variation < Helper
statt
module Helper
module OwnMethods
# Put methods here instead of class << self
end
extend OwnMethods
end
module Variation
extend Helper::OwnMethods
Für nur Namespacing würde ich jedoch im Allgemeinen ein Modul über eine Klasse verwenden, da eine Klasse impliziert, dass Instanziierung auftreten wird.
Einer von ihnen hat einen zusätzlichen Buchstaben als der andere? :) Was meinst du mit "gibt es einen Unterschied"? Einer ist eine Klasse, einer ist ein Modul, und in beiden tritt man in die Eigenklasse ein. – Phrogz
Ich denke ich möchte fragen, wann würdest du eins über das andere benutzen. Ich habe die Frage bearbeitet, um das zu reflektieren. –