2

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

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'

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

4

3 回答 3

6

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

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

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

于 2009-09-11T01:31:33.220 回答
2

明确要求所有文件的主要原因就是——通常是明确的。这样,阅读您的代码的其他人(或几个月后的您)将更容易发现发生了什么。

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

于 2009-09-11T01:35:58.643 回答
1

如果您通常需要多个文件中的所有 10 个文件,那么是的,这是非常有意义的。

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

如果您使用操作码缓存(APC、eAccelerator 等),由于您正在执行无条件包含,因此即使理论上的差异也几乎消失了。

于 2009-09-11T01:28:54.840 回答