2009-09-11 6 views
2

Si j'ai un tas de besoin dans mon fichier app:Une mauvaise pratique pour supprimer toutes les instructions require dans un fichier distinct?

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

serait-il une mauvaise pratique de mettre la bande tout cela exige et les mettre dans un fichier séparé qui fait exactement toutes requires - appelons-le « all_requires.rb » - alors je peux dire:

require 'all_requires' 

Je ne l'ai jamais vu cette approche dans le code d'autres personnes alors peut-être il y a une raison?

Répondre

6

Il n'y a rien de vraiment faux en soi, mais cela ne semble généralement pas être très bénéfique pour Ruby. Il cache ce que le fichier à portée de main dépend et ajoute simplement un autre niveau d'indirection. Cela ne fonctionne pas aussi bien avec des conditions conditionnelles. Il est plus fréquent de faire comme:

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

De cette façon, vous évitez le grand train de la require lignes, mais gardez toujours localisée et déclarative.

+0

C'est une solution élégante. Merci. – uzo

1

Si vous avez généralement besoin de tous les 10 de ces fichiers dans plusieurs fichiers alors oui cela est parfaitement logique.

Vous effectuez un fichier d'accès supplémentaire et l'analyse d'un fichier supplémentaire de cette façon, mais vous inquiéter à ce sujet est vraiment la micro-optimisation. Si cela rend votre code plus propre ou plus lisible, alors allez-y. C'est beaucoup plus important que tous les cycles enregistrés perçus en ne lisant pas un fichier à partir du disque.

Si vous utilisez la mise en cache par opcode (APC, eAccelerator, etc.), même la différence théorique disparaît pratiquement puisque vous faites des inclusions inconditionnelles.

+0

Pas dans plusieurs fichiers, non. Juste en un. Mais ça me fait mal aux yeux de les voir tous en haut du fichier principal dans lequel je travaille. – uzo

2

La raison principale d'exiger explicitement tous les fichiers est juste que - il est normalement bon d'être explicite. De cette façon, quelqu'un d'autre qui lit votre code (ou vous, des mois plus tard) aura plus de facilité à découvrir ce qui se passe.

Si vous avez besoin d'autres fichiers, il peut être difficile de savoir d'où proviennent les choses.

Questions connexes