4 Stimmen

Rails: Best Practice für Modellabhängigkeit Klasse Standorte?

Ich habe eine Rails-App, die ziemlich gut läuft, aber die Tatsache, dass ich das selbst mache, bedeutet, dass irgendeine arme Sau das irgendwann sehen wird und sagt: "Was zum Teufel hast du dir dabei gedacht? Warum hast du das hier hingestellt?!?!"

Woher soll die arme, bedauernswerte Seele eine Reihe von Klassen nehmen, die nur von einer einzigen Modellklasse verwendet werden? Offensichtlich könnte ich sie in the_model.rb zusammen mit der Klasse TheModel unterbringen, aber das könnte über die geplanten zwei Klassen hinausgehen...

Ich habe über lib nachgedacht, aber es muss nicht jedem den Blick auf die Welt verstellen....

Ich danke Ihnen.

Mein Vorgänger dankt Ihnen.

4voto

Jim Puls Punkte 75380

Lassen Sie sie in the_model.rb bis Sie sie an mehr als einem Ort benötigen. Wenn Sie unnötig refaktorisieren, tun Sie nicht das Einfachste, was möglich ist. Sie werden es nicht brauchen .

Zu diesem Zeitpunkt wird in der Regel ein Verzeichnis für "concerns" angelegt. Siehe dieser Weblog-Beitrag von Jamis Buck o dieses von Peter Marklund für weitere Informationen.

0voto

levinalex Punkte 5671

Generell gilt: Befolgen Sie die Rails-Namenskonventionen, wenn Sie Klassennamen in Dateisystempositionen übersetzen. (das heißt: die Klasse FooHelper::Bar sur foo_helper/bar.rb )

Sie können Ausnahmen für kleine Hilfsklassen machen, die nur einmal verwendet werden, und sie in derselben Datei wie Ihr Modell aufbewahren, aber das sollten Ausnahmen sein. (Aber auch der Umkehrschluss gilt: Erstellen Sie nicht Tausende von einzeiligen Dateien)

Nutzen Sie Module und Klassennamensräume zu Ihrem Vorteil. Wenn Sie eine Hilfsklasse haben, die nur von Ihrem Modell verwendet wird (und davon abhängt), legen Sie sie in den Namespace der Modellklasse:

class TheModel::HelperClass
end

wäre der Speicherort im Dateisystem app/models/the_model/helper_class.rb

Und etwas, das nicht von Ihrem Modell abhängig ist, kann wahrscheinlich immer noch mit einem Namensraum versehen werden

module Bar
  class Foo
  end
end

wohnhaft in bar/foo.rb natürlich

Sie sollten sich nicht scheuen, auch Dinge, die keine Modelle sind, in die lib -- das ist dieses Verzeichnis für

Ich würde sagen betrifft sind zwar nützlich, aber nicht wirklich der richtige Weg, denn so kann man eine einzeln Klasse in mehrere Dateien aufzuteilen, und Sie scheinen das nicht zu tun.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X