2011-08-30 56 views
3

我在問這個Ruby,但我想這個原理可以應用於每個有多個文件的項目。假設我有一個主文件,例如application,需要一些其他模塊model1model2。這兩個模塊都需要common模塊。我見過很多Ruby項目,要求在applicationcommonmodel1model2。雖然這可以直接使用application,但如果您需要使用其他模塊之一,則可以獲得NameError。那麼這可能會影響項目的模塊化嗎?我是否應該更喜歡明確要求每個文件的所有依賴關係? (通過不作任何關於的假設,其中需要該文件)我應該明確要求每個文件中的所有依賴關係嗎?

+1

有點相關的例子:http://stackoverflow.com/questions/6896883/active-merchant-uninitialized-constant-activesupportxmlmini-rexmlstringio –

回答

1

如果模塊被設計爲從不同的應用程序加載,我總是需要所有的依賴關係。如果model1只是特定於應用程序的元素,則不需要加載已加載的模塊。

但它會看看,真正需要什麼。 model1model2需要common還是需要mainfile.rb? (我不認爲,在您的具體情況下就是這種情況)有時,如果您的一項要求(我們稱之爲主要要求)已經加載其他(子)要求,則無需加載所有要求。

0

我將require s放入正在使用require d的文件中。這部分將您的代碼分解爲便攜式模塊。您可以在目錄/名稱空間之間移動文件,並且可以將部分文件抽出並放入其他存儲庫/項目中,或將它們變成寶石。在需要的地方執行require也會使您的代碼更具溝通性,因此更易於理解。早期的讀者會更好地瞭解文件中代碼的責任區域。

通過將require設置在某個頂層或頂層文件中,即嵌入了較高層文件與較低層文件的耦合。較高級別的文件獲取有關較低級別文件所需和需要的知識。您還隱藏實際使用依賴關係的位置。這使清理更具挑戰性,如果你想刪除未使用的依賴關係。您無法輕易地告訴在何處以及如何使用給定的依賴關係。如果require被放在使用它們的位置,那麼當從該文件中刪除依賴項用法時,如果在另一個文件中出現require d,則可以從給定文件中刪除require,則應用程序不會因爲去除。如果將require放在更高級別的文件中,則開發人員可能會從一個文件中刪除使用情況,然後認爲不再使用該依賴項,並從較高級別的文件中刪除require,從而打破代碼在使用它的其他文件中。造成缺少依賴一個錯誤的

相關問題