¿Es una mala práctica quitar todas las declaraciones de requisitos en un archivo separado?

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Si tengo muchos requisitos en mi archivo de aplicación principal:

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

¿sería una mala práctica eliminar todos estos requisitos y colocarlos en un archivo separado que cumpla con todos los requisitos? Llamémoslo ' all_requires.rb '. sólo puedo decir:

require 'all_requires'

Nunca he visto este enfoque en el código de otras personas, ¿así que quizás haya una razón?

¿Fue útil?

Solución

No hay nada realmente malo en ello per se, pero en general parece que no hay un gran beneficio para eso en Ruby. Oculta de qué depende el archivo en cuestión y solo agrega otro nivel de direccionamiento indirecto. Tampoco funciona tan bien con los requisitos condicionales. Es más común hacer como:

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

De esa manera, evitará el enorme tren de líneas de require pero aún así lo mantendrá localizado y declarativo.

Otros consejos

La razón principal para requerir todos los archivos explícitamente es solo eso: normalmente es bueno ser explícito. De esta manera, alguien que lea su código (o usted, meses más tarde) tendrá un tiempo más fácil para averiguar qué está pasando.

Si sus requisitos están en otros archivos, puede ser bastante difícil saber de dónde vienen las cosas.

Si comúnmente necesitas los 10 de esos archivos en varios archivos, entonces sí, eso tiene mucho sentido.

Usted está haciendo un acceso a un archivo adicional y está analizando un archivo adicional de esta manera, pero preocuparse por eso es realmente una microoptimización. Si hace que su código sea más limpio o simplemente más legible, entonces hágalo. Eso es mucho más importante que cualquier ciclo guardado que se perciba al no leer un archivo del disco.

Si utiliza el almacenamiento en caché de código de operación (APC, eAccelerator, etc.), incluso la diferencia teórica desaparece bastante ya que está haciendo incondicionales, incluye.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top