cattiva pratica per eliminare tutte le istruzioni richieste in un file separato?

StackOverflow https://stackoverflow.com/questions/1408565

  •  05-07-2019
  •  | 
  •  

Domanda

Se ho un sacco di requisiti nel mio file principale dell'app:

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

sarebbe una cattiva pratica mettere fuori strip tutti questi requisiti e metterli in un file separato che fa solo tutti i requisiti - chiamiamolo ' all_requires.rb ' - quindi posso solo dire:

require 'all_requires'

Non ho mai visto questo approccio nel codice di altre persone, quindi forse c'è un motivo?

È stato utile?

Soluzione

Non c'è nulla di veramente sbagliato in sé, ma in genere non sembra esserci un grande beneficio in Ruby. Nasconde da cosa dipende il file a portata di mano e aggiunge solo un altro livello di riferimento indiretto. Inoltre non funziona altrettanto bene con i requisiti condizionali. È più comune fare come:

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

In questo modo eviti l'enorme treno di richiedono ma lo mantieni comunque localizzato e dichiarativo.

Altri suggerimenti

Il motivo principale per richiedere esplicitamente tutti i file è proprio questo: normalmente è bene essere espliciti. In questo modo qualcun altro che legge il tuo codice (o tu, mesi dopo) avrà più tempo a scoprire cosa sta succedendo.

Se le tue esigenze sono in altri file, può diventare piuttosto difficile sapere da dove provengono le cose.

Se di solito hai bisogno di tutti e 10 questi file in più file, allora sì, ha perfettamente senso.

Stai facendo un ulteriore accesso ai file e analizzando un altro file in questo modo, ma preoccuparti di ciò è davvero una micro ottimizzazione. Se rende il tuo codice più pulito o semplicemente più leggibile, prova. È molto più importante di qualsiasi ciclo salvato percepito non leggendo un file dal disco.

Se si utilizza la cache del codice operativo (APC, eAccelerator, ecc.) anche la differenza teorica scompare praticamente dal momento che si eseguono inclusioni incondizionate.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top