2

メインのアプリファイルにたくさんのrequireがある場合:

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

これらすべてのrequiresを削除し、すべてのrequiresを実行する別のファイルに配置するのは悪い習慣でしょうか-それを' all_requires.rb'と呼びましょう-それで私はただ言うことができます:

require 'all_requires'

私は他の人のコードでこのアプローチを見たことがないので、おそらく理由がありますか?

4

3 に答える 3

6

それ自体には何も悪いことはありませんが、Rubyでは一般的にそれほどメリットがないようです。手元のファイルが依存しているものを非表示にし、別のレベルの間接参照を追加するだけです。また、条件付きのrequiresではそれほどうまく機能しません。次のようにするのが一般的です。

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個すべてを複数のファイルに含める必要がある場合は、そうです。これは完全に理にかなっています。

この方法で1つの追加ファイルアクセスを実行し、1つの追加ファイルを解析していますが、それについて心配するのは実際にはマイクロ最適化です。それがあなたのコードをよりきれいにするか、単に読みやすくするなら、それを選んでください。これは、ディスクから1つのファイルを読み取らないことによって、認識される節約され​​たサイクルよりもはるかに重要です。

オペコードキャッシング(APC、eAcceleratorなど)を使用する場合、無条件のインクルードを実行しているため、理論上の違いでさえほとんどなくなります。

于 2009-09-11T01:28:54.840 に答える