плохая практика, чтобы вырезать все требуемые заявления в отдельный файл? - PullRequest
2 голосов
/ 11 сентября 2009

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

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'

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

Ответы [ 3 ]

6 голосов
/ 11 сентября 2009

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

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

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

2 голосов
/ 11 сентября 2009

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

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

1 голос
/ 11 сентября 2009

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

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

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

...