плохая практика выделять все инструкции require в отдельный файл?

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

  •  05-07-2019
  •  | 
  •  

Вопрос

Если у меня есть целая куча требований в моем основном файле приложения:

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

было бы плохой практикой удалять все эти требования и помещать их в отдельный файл, который просто выполняет все требования - давайте назовем это 'all_requires.rb" - значит, тогда я могу просто сказать:

require 'all_requires'

Я никогда не видел такого подхода в коде других людей, так что, возможно, на то есть причина?

Это было полезно?

Решение

По сути, в этом нет ничего плохого, но в Ruby, как правило, нет большой выгоды. Он скрывает, от чего зависит данный файл, и просто добавляет еще один уровень косвенности. Это также не очень хорошо работает с условными требованиями. Чаще всего это нравится:

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

Таким образом, вы избегаете огромного ряда строк require , но при этом сохраняете его локализованным и декларативным.

Другие советы

Основная причина, по которой все файлы требуются явным образом, заключается в том, что обычно хорошо быть явным. Таким образом, кому-то еще, кто читает ваш код (или вам, месяцы спустя), будет легче узнать, что происходит.

Если ваши требования находятся в других файлах, может быть довольно сложно узнать, откуда что происходит.

Если вам обычно требуются все 10 из этих файлов в нескольких файлах, то да, это имеет смысл.

Таким образом, вы получаете доступ к одному дополнительному файлу и анализируете один дополнительный файл, но беспокоиться об этом - это действительно микрооптимизация.Если это сделает ваш код чище или просто более читабельным, тогда дерзайте.Это гораздо важнее, чем любые предполагаемые сохраненные циклы, если не читать ни одного файла с диска.

Если вы используете кэширование кода операции (APC, eAccelerator и т.д.), Даже теоретическая разница в значительной степени исчезает, поскольку вы выполняете безусловное включение.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top