【问题标题】:Nested functions vs. chaining methods vs. a && sequence of functions嵌套函数 vs. 链接方法 vs. && 函数序列
【发布时间】:2016-04-06 21:09:35
【问题描述】:

晚上好/早上好(取决于你的位置),

我是一个新手“开发者”(JS/Meteor 平台),每天我都会发现关于 JS 的新事物。知道我的低级,没那么难……

我目前想知道编写switch(true) 的最佳方式/实践。 更准确地说,我有一个 Switch statement 和类似 20 cases 的东西。

目前,我决定不将一些cases 嵌套在一起,我发现它不太容易阅读。所以我的陈述看起来像这样:

switch()
  case 1
  case 2
  case 3
  case 4
  case 5
  case 6
  ...
  default

而不是类似的东西:

switch()
  case 1
    if
    elseif
    else
  //or
  case 2
    switch()
      case 2.1
      case 2.2

我的问题是:每个案例都测试了 5 个以上的函数。所以case基本上是这样写的:

case ( function1()
       && function2()
       && function3() == null
       && typeof abc[1] === 'undefined'
       && function4() === 'xyz') : //etc...

有没有更好的链接函数的方法?

我目前正在以 jQuery 方式查看链接方法:function().function2().function3()... 但我不知道它是否有更好的方法来处理这种情况。

我很高兴收到您的反馈/建议以及您推荐的任何阅读/讲座。我也希望这个问题对 SO 来说是“正确的”。

非常感谢。

【问题讨论】:

  • 你为什么用switch?
  • 您到底想达到什么目的?提供更多上下文会使您的问题更清晰。我还没有发现自己需要使用switch 语句。
  • 我们需要更多关于您要解决的实际问题的详细信息。你在写自动化单元测试之类的吗?
  • 我们需要看到实际的问题和代码(不仅仅是一个理论问题),以便为更好的方法提供好的想法。解决此类问题的最佳方法取决于代码的具体情况。没有更好的方法的通用答案。

标签: javascript function optimization chaining


【解决方案1】:

您应始终反对使用小函数以提高可读性。将函数调用分组到新函数中可能是个好主意。您可以越快确定函数的功能越好。尽量只包含与当前功能相关的内容,例如:

您应该获取关于一个人的大量信息,但这些信息分散到不同的来源,迫使您拥有一种功能用于姓名、一种用于年龄、一种用于鞋码等。

而不是像这样写

case 1:
    var person = {
        name: getName(),
        age: getAge(),
        showSize: getShowSize()
    };

你可以这样写

case 1:
    var person = getPerson();

还有getPerson函数

function getPerson() {
    return {
        name: getName(),
        age: getAge(),
        showSize: getShowSize()
    }
}

在您的 20 个案例中,我确信在多个案例中使用了逻辑函数组。如果它们有任何逻辑联系,请尝试将它们组合在一起。对于一个有 20 个案例的开关,我会尽量不要在每种情况下都编写太多代码,因为这可能会让人很难看清函数的作用。

我希望我能解决您的问题,并且至少给了您一些您认为有用的建议。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2012-12-02
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多