繁体   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