2017-10-09 62 views
2

我只在最近遇到這種做法,而看着Apollo Client examples - 我沒有意識到所有導入語句可能位於.js文件的底部。這似乎是一個好主意,因爲在打開文件時很少見到導入語句是我期望處理的內容。將ES6導入語句放在代碼文件的底部是否有缺點?

在訂單無關緊要的情況下,我們應該注意這種做法有什麼不利之處嗎?

這可能只是一個例子,因爲同一家公司puts imports at the top in production code - 但我不知道爲什麼它不適用於生產代碼。我們使用的是TypeScript,但我相信這些問題與vanilla ES6相同。

+0

缺點是可讀性,我猜。通常情況下,你想在函數被調用之前定義你的函數,儘管在JS中提升函數並不重要,但是這樣做仍然被認爲是很好的做法。 – mhodges

+1

其中一個主要缺點是可讀性,並且只要使用任何模塊捆綁器,它就會拋出錯誤,它會要求您將所有導入語句重新排列到頂端,這樣纔會更有意義。 – SsNewbie

+2

*打開文件時很少見,導入語句正是我期待處理的內容* - 您可以輕鬆地在IDE中摺疊它們。另一方面,很多人可能想知道他們在當前文件中處理的是什麼。而瞧,似乎無依賴的模塊在沒有人期待的地方包含一堆進口產品。多麼好的方式讓同行開發人員難以相信。最好使用省略分號,括號和'1 == val'條件。 – estus

回答

3

通常情況下,您首先需要聲明/定義某些內容,然後使用它。先使用它然後定義它似乎很奇怪。有人閱讀你的代碼會期望導入位於文件的頂部。

這也適用於功能:你可以使用它們聲明之前,但有人誰讀代碼希望找到函數的聲明上面幾行,不低於:

var result = add(10, 5); 

// some other code 

function add (a, b) { 
    return a + b; 
} 

這似乎是一個好主意,因爲打開文件時很少見,導入語句正是我期望處理的內容。

我不同意。當我查看一個文件時,我對它的依賴關係以及它與項目中其他文件的關係感興趣。

假設您想了解某個文件是關於什麼的。通常,您會瀏覽代碼,首先查看導入,然後查看使用這些導入的代碼。否則,你會遇到很多你從未見過的東西。

+0

同意我在查看開源代碼並掌握它,或瀏覽非常大的項目。儘管我的大部分用例都使用任何給定功能上相同數量的文件。 –

+0

是的,這取決於您的個人偏好,但如果您希望其他人能夠輕鬆閱讀並理解您的代碼,我認爲您應該將導入語句放在文件的頂部。 – PeterMader

+0

這是一個公平點。現代當我想知道什麼是定義的時候,我是F12,所以它是高於還是低於常常是不相關的。但目前看來,它遠遠超出了傳統。感謝您的想法! –

相關問題