将所有require语句删除到单独文件中的错误做法?

时间:2009-09-11 01:25:30

标签: ruby require

如果我的主应用程序文件中有大量需求:

require 'a'
require 'b'
require 'c'
require 'd'
require 'e'
require 'f'
require 'g'
require 'h'
require 'i'
require 'j'
将所有这些需求放入条带并将它们放在一个单独的文件中,只需要满足所有要求 - 让我们称之为'all_requires.rb',这是不好的做法 - 所以我可以说:< / p>
require 'all_requires'

我从未在其他人的代码中看到这种方法,所以也许有原因?

3 个答案:

答案 0 :(得分:6)

它本身并没有什么问题,但在Ruby中通常似乎并没有带来很多好处。它隐藏了手头的文件所依赖的内容,只是添加了另一个间接层。对于条件要求,它也不能很好地发挥作用。这样做更常见:

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

这样你就可以避开大量require行,但仍保持本地化和声明性。

答案 1 :(得分:2)

明确要求所有文件的主要原因就是 - 显式通常是好的。这样,读取您的代码的其他人(或者您,几个月后)将更容易找到正在发生的事情。

如果您的要求在其他文件中,则很难知道事情的来源。

答案 2 :(得分:1)

如果您通常需要多个文件中的所有10个文件,那么是完全合理的。

您正在进行一次额外的文件访问并以这种方式解析一个额外的文件,但担心这是微优化。如果它使您的代码更清晰或更具可读性,那就去吧。通过不从磁盘读取一个文件,这比任何感知的保存周期都重要得多。

如果您使用操作码缓存(APC,eAccelerator等),那么即使理论上的差异也会消失,因为您正在进行无条件的包含。