Frage

Wenn ich eine ganze Reihe von Anforderungen in meiner Haupt -App -Datei habe:

require 'a'
require 'b'
require 'c'
require 'd'
require 'e'
require 'f'
require 'g'
require 'h'
require 'i'
require 'j'

Wäre es eine schlechte Übung, alle diese erforderlichen zu streifen und sie in eine separate Datei zu stecken, die nur alle benötigt - nennen wir es '' 'all_requires.rb' - Also kann ich einfach sagen:

require 'all_requires'

Ich habe diesen Ansatz noch nie im Code anderer Menschen gesehen, also gibt es vielleicht einen Grund?

War es hilfreich?

Lösung

An sich ist nichts wirklich falsch, aber in Ruby scheint es im Allgemeinen nicht viel Nutzen zu geben. Es verbirgt, worauf die vorliegende Datei abhängt, und fügt nur eine weitere Indirektion hinzu. Es funktioniert auch nicht so gut mit bedingten Anforderungen. Es ist häufiger zu tun:

DEPENDENCIES = %w(a b c d e f g h i j k)
DEPENDENCIES.each {|f| require f}

Auf diese Weise vermeiden Sie den riesigen Zug von require Linien, aber halten es immer noch lokalisiert und deklarativ.

Andere Tipps

Der Hauptgrund für die expliziten Anfordern aller Dateien ist genau das - es ist normalerweise gut, explizit zu sein. Auf diese Weise wird jemand anderes, der Ihren Code (oder Sie, Monate später) liest, eine leichtere Zeit haben, herauszufinden, was los ist.

Wenn Ihre Forderungen in anderen Dateien sind, kann es ziemlich schwierig werden, zu wissen, woher die Dinge kommen.

Wenn Sie normalerweise alle 10 Dateien in mehreren Dateien benötigen, ist das durchaus sinnvoll.

Sie erstellen einen zusätzlichen Dateizugriff und analysieren eine zusätzliche Datei auf diese Weise. Wenn es Ihren Code sauberer oder einfach lesbarer macht, dann machen Sie es. Das ist weitaus wichtiger als alle wahrgenommenen gespeicherten Zyklen, indem keine Datei von der Festplatte gelesen wird.

Wenn Sie Opcode Caching (APC, EACCelerator usw.) verwenden, verschwindet auch der theoretische Unterschied so ziemlich, dass Sie bedingungsvoll tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top