簡體   English   中英

如果一個函數只在另一個函數中使用,我應該把它放在里面還是外面?

[英]If a function is only used in another function should I keep it inside or outside it?

就像在主題中一樣。 我有一個像下面這樣的函數,我在一個函數中聲明了很多幫助函數(是示例中的兩倍),因為它是唯一一個使用它們的函數。

我的問題是:我應該提取功能之外的那些幫助功能來維護規則“功能應該做一份工作並做好”還是應該在內部? 我還讀到更高級別的函數應該更高以獲得更好的可讀性,但它不知何故不起作用(不應該提升使其工作?)。

const queryThings = async (body = defaultBody) => {
  try {
    (...)

    // helping functions
    const isNonTestDeal = obj => (...)
    const isNonEmpty = obj => (...)
    const replaceHTMLEntity = obj => (...)
    const extractCountries = o => (...)

    const queried = await query(...) // that one is outside this function

    const cases = queriedCases
      .filter(isNonTestDeal)
      .map(obj => {

        let countries = [(...)]
          .filter(isNonEmpty)
          .map(replaceHTMLEntity)
          .map(extractCountries)

        let data = {
          (...)
        }
       return data
      })
      .filter(obj => (...))
      .sort((a,b) => a.d - b.d)
      .slice(0, 45) // node has problem with sending data of more than 8KB

    return cases
  } catch (error) {
    console.log(error)
  }
}

如果在外面聲明該函數,並且只在一個函數中使用它,那么就會造成命名空間污染。 什么是命名空間污染? )因此,我建議將其保留在內部。 此外,如果你這樣做,它也更容易閱讀,因為它將更接近使用它的代碼。

為了解決您關於提升的問題,它僅在您聲明您的函數而不將其分配給變量時才有效。

我認為當你在其他函數中編寫函數時,內存使用比寫出函數要好,但你不能在另一個函數中使用它是本地函數而不是公共函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM