mauvaise pratique de supprimer toutes les déclarations obligatoires dans un fichier séparé?

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

  •  05-07-2019
  •  | 
  •  

Question

Si j'ai beaucoup d'exigences dans mon fichier d'application principal:

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 supprimer toutes ces demandes et de les placer dans un fichier séparé qui ne fait que toutes les demandes - appelons-le ' all_requires.rb ' - alors peut simplement dire:

require 'all_requires'

Je n'ai jamais vu cette approche dans le code des autres, alors peut-être y a-t-il une raison?

Était-ce utile?

La solution

Il n’ya rien de vraiment faux en soi, mais cela ne semble généralement pas présenter beaucoup d’avantages en Ruby. Il cache ce dont dépend le fichier en question et ajoute simplement un autre niveau d'indirection. De plus, cela ne fonctionne pas très bien avec les exigences conditionnelles. Il est plus courant 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 train énorme de requièrent de lignes tout en le gardant localisé et déclaratif.

Autres conseils

La raison principale pour exiger explicitement tous les fichiers est simplement qu'il est bon d'être explicite. Ainsi, quelqu'un qui lit votre code (ou vous-même, des mois plus tard) aura plus de facilité à découvrir ce qui se passe.

Si vos besoins se trouvent dans d'autres fichiers, il peut devenir assez difficile de savoir d'où proviennent les choses.

Si vous avez généralement besoin de ces 10 fichiers dans plusieurs fichiers, alors c'est parfaitement logique.

Vous effectuez un accès de fichier supplémentaire et vous analysez un fichier supplémentaire de cette façon, mais vous en préoccuper est une véritable micro-optimisation. Si cela rend votre code plus propre ou plus lisible, foncez. C’est bien plus important que les cycles enregistrés perçus en ne lisant pas un fichier à partir du disque.

Si vous utilisez la mise en cache d'opcode (APC, eAccelerator, etc.), même la différence théorique disparaît à peu près puisque vous effectuez des inclusions inconditionnelles.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top