2009-09-11 53 views
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' 

我從來沒有見過在其他人的代碼這種方法所以也許有一個原因?

回答

6

它本身並沒有什麼錯,但在Ruby中通常並沒有太多好處。它隱藏了手頭文件所依賴的內容,只是增加了另一個間接級別。它也不能滿足條件要求。這是比較常見的做這樣:

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

這樣,你避免require線的巨大列車,但仍然保持本地化和聲明。

+0

這是一個優雅的解決方案。謝謝。 – uzo 2009-09-11 02:00:56

1

如果您通常需要多個文件中的所有10個文件,那麼是的,這是非常有意義的。

您正在做一個額外的文件訪問和解析一個額外的文件這種方式,但擔心這是真正的微優化。如果它使你的代碼更乾淨或更具可讀性,那麼就去做吧。由於不從磁盤讀取一個文件,這比任何感知的保存週期重要得多。

如果你使用操作碼緩存(APC,eAccelerator等),即使理論上的差異幾乎消失,因爲你正在做無條件的包含。

+0

不在多個文件中,沒有。只是一個。但它傷害了我的眼睛,看到他們在我工作的主要文件的頂部。 – uzo 2009-09-11 01:30:31

2

明確要求所有文件的主要原因就是這樣 - 通常是明確的。通過這種方式,讀取你的代碼的其他人(或者你,幾個月後)將會更容易地找出發生了什麼事情。

如果您的要求在其他文件中,可能會很難知道事情來自哪裏。

相關問題