Ich habe eine zweiteilige Frage
Beste Übung
- Ich habe einen Algorithmus, der eine Operation an einer Datenstruktur unter Verwendung der öffentlichen Schnittstelle ausführt
- Derzeit handelt es sich um ein Modul mit zahlreichen statischen Methoden, die bis auf die eine öffentliche Schnittstellenmethode alle privat sind.
- Es gibt eine Instanzvariable, die von allen Methoden gemeinsam genutzt werden muss.
Dies sind die Optionen, die ich sehen kann, welche sind die besten?:
- Modul mit statischen Methoden ('Modul' in Ruby)
- Klasse mit statischen Methoden
- Mixin- Modul zur Aufnahme in die Datenstruktur
- Refaktorieren Sie den Teil des Algorithmus, der diese Datenstruktur ändert (sehr klein), und machen Sie daraus ein Mixin, das die statischen Methoden des Algorithmusmoduls aufruft
Technischer Bereich
Gibt es eine Möglichkeit, eine private Modulmethode zu erstellen ?
module Thing
def self.pub; puts "Public method"; end
private
def self.priv; puts "Private method"; end
end
Das private
drin scheint keine Wirkung zu haben , ich kann trotzdem Thing.priv
ohne Probleme anrufen .
private
Betrifft nur Instanzmethoden, keine Klassenmethoden. Verwenden Sie private_class_method
stattdessen:module Thing; def self.pub; end; private_class_method :pub; end